web-dev-qa-db-ja.com

Ruby StringではなくRuby $ ===でStringIOを使用する利点は何ですか?

Stringを使用するだけでなく、RubyのStringIOを使用するのが適切と考えられるのはいつですか?

" RubyのStringIOクラスとは実際には? "で強調されているように、それらの基本的な違いを理解していると思います。しかし、これは実際には何を意味するのでしょうか?

単純にStringを使用しても効果が得られない場合に、StringIOを使用する実用的な例は何ですか?

43
Scott Joseph

基本的には、文字列をIOオブジェクトのように見えるため、StringIOという名前になります。

StringIO クラスにはreadおよびwriteメソッドがあるため、ファイルまたはソケットから読み取りおよび書き込みを行うように設計されたコードの一部に渡すことができます。文字列があり、ファイルコードをテストするために、ファイルのように見せたい場合は便利です。

def foo_writer(file)
  file.write "foo"
end

def test_foo_writer
  s = StringIO.new
  foo_writer(s)
  raise "fail" unless s.string == "foo"
end
68
David Grayson