[code="ruby"]
cvs = ["a",""]; #第一种空格
cvs << Array.new(3, "") # 第二种空格
cvs.flatten!()
puts cvs.inspect
cvs.collect! do |item|
item.insert(0,"\"")<<"\"";
end
puts cvs.inspect
[/code]
结果最后三个都是: """"""
第一种空格和第二种空格有什么区别?
[code="ruby"]
cvs = ["a",""]; #第一种空格
cvs << Array.new(3, "") # 第二种空格
cvs.flatten!()
puts cvs.inspect
cvs.collect! do |item|
item.insert(0,"\"")<<"\"";
end
puts cvs.inspect
[/code]
结果最后三个都是: """"""
第一种空格和第二种空格有什么区别?
问题出在Array.new(3,"")上。
对这种方式创建的Array,每个元素指向的实际上都是同一个对象。
在你的collect!处理中,当处理到这三个元素时,每次都在同一个对象前后增加"号,所以最终变成了三对"号。