1,使用迭代器和join的不同
data=['1','2','3']
s=''
data.each{|x| s<<x<<' and '}
puts s
puts data.join(" and ")
line 4输出的是:1 and 2 and 3 and
line 5则是:1 and 2 and 3
可以使用each_with_index实现join
data.each_with_index{|x,i| ss<<x;ss<<' and ' if i<data.length-1}
2,<< pk +
使用前者向string中append时会比后者的性能有所提高,因为后者会创建新的string对象。
3,You want to create a string that contains a representation of a Ruby variable or expression.
eg: number=5
puts "the number is #{number}"
puts "the number is #{5}"
puts "the number now is #{number-1}"
puts "the number is #{number.next} or #{number.prior}"
没有Fixnum#prior方法。
Discussion
1)#{}中定义的变量或者类可以在#{}之外使用
puts "Here is #{
class Bar
def bar
" some text"
end
end
Bar.new.bar}"
bar=Bar.new
puts bar.bar
输出:Here is some text
some text
2)避免#{}的转义作用
foo="foo"
puts "\##{foo}"
puts '#{foo}'
puts '\#{foo}'
puts "#{foo}"
puts "\#"
3)使用END
name = "Mr. Lorum"
email = <<END
Dear #{name},
Unfortunately we cannot process your insurance claim at this
time. This is because we are a bakery, not an insurance company.
Signed,Nil, Null, and None
Bakers to Her Majesty the Singleton
END
puts email
另外END可以用任意的字符替代。
hello=<<ok
Does it ok?
ok
puts hello
这里有一个问题就是END前面不能有空格?
©著作权归作者所有:来自51CTO博客作者abio的原创作品,如需转载,请注明出处,否则将追究法律责任
职场cookbook休闲Ruby