Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby ライブラリ StringIO - Silver/Gold試験対策

require 'stringio'

stringioの使い所がわからなかった。 http://itpro.nikkeibp.co.jp/article/COLUMN/20060314/232389/ まつもとゆきひろさんによると、 ログ出力のケースが挙げられている。 ファイルに書き込まずに、データベースやメモリ上など 多様な出力先に文字列を出し入れする際は DuckTyping(IOオブジェクトのようにファイルのように読み書きできればそれで良いじゃないか)の観点で メリットがあるようだ。 エラー定義なども自由にできるので、気楽なんだろう。

sio = StringIO.new("hoge", "r")
p sio.getc # "h"。 一文字ずつ読み込む。
sio = StringIO.new("hoge", "w")
p sio.getc # not opened for reading (IOError)。読み取り属性のため
sio = StringIO.new("hoge", "r+")
p sio.getc # "h"。
sio = StringIO.new("hoge", "w+")
p sio.getc # nil。 空になるため。
sio = StringIO.new("hoge")
p sio.getc #=> "h"
p sio.gets #=> "oge"
p sio.size #=> 4
p sio.pos #=> 4
p sio.getc #=> 終端に達するとnil
p sio.rewind #=> 0
sio << "longstring"
p sio.rewind #=> 0
p sio.gets #=> "longstring"
p sio.pos #=> 4
p sio.pos = 2
p sio.getc #=> n
p sio.string #=> "longstring"
sio = StringIO.new("hoge", "w+")
sio.string = "aaa"
p sio.string #=> "aaa"
sio.puts("hogehoge")
p sio.string #=> "hogehoge\n"