Sco*_*eph 45 ruby string stringio
何时使用Ruby的StringIO而不是仅仅使用String?
我想我明白他们之间的根本区别的是突出了" 什么是Ruby的StringIO类,是真的吗? ",这StringIO的使人们能够读取和/写入到一个面向流的方式的字符串.但这实际意味着什么呢?
简单地使用String时使用StringIO实际使用的一个很好的例子是不是真的会削减它?
Dav*_*son 69
基本上,它使字符串看起来像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
Run Code Online (Sandbox Code Playgroud)
Ste*_*ner 27
我非常喜欢StringIO,用于逐行添加文本的用例,而不必"\n"反复使用.例如,而不是这样:
s = ''
s << "\n" << "some text on a new line"
s << "\nthis is pretty awkward"
s = "#{s}\neven more ugly!"
Run Code Online (Sandbox Code Playgroud)
我可以做这个
s = StringIO.open do |s|
s.puts 'adding newlines with puts is easy...'
s.puts 'and simple'
s.string
end
Run Code Online (Sandbox Code Playgroud)
哪个更清洁.没有必要使用块形式String.IO,你可以像这样创建一个对象:s = StringIO.new但无论如何,请务必记住通过该StringIO#string方法访问的实际字符串.
| 归档时间: |
|
| 查看次数: |
25890 次 |
| 最近记录: |