我有一个嵌套数组:
array_name = [
["Alice", "pizza", "soccer"],
["Steve", "sushi", "hockey"],
["Alex", "pasta", "none"]
]当我在循环中使用inspect时:
array_name.each do |i|
puts i.inspect
end它的产出如下:
["Alice", "pizza", "soccer"]
["Steve", "sushi", "hockey"]
["Alex", "pasta", "none"]但是,使用puts来打印来自每个单独数组的每个元素:
array_name.each do |i|
puts i
end产出:
Alice
pizza
soccer
Steve
sushi
hockey
Alex
pasta
none为什么array_name.inspect像上面那样输出整个数组?
我读到inspect试图打印编码版本。那么,我不明白为什么下面显示的输出与上面的第二段代码相同:
array_name.each do |i|
i.each do |sub_i|
puts sub_i
end
end产出:
Alice
pizza
soccer
Steve
sushi
hockey
Alex
pasta
none上面的第二个和第三个代码给了我相同的输出,它不是数组,而是每个数组中的实际元素。为什么会这样呢?
发布于 2018-05-07 21:49:30
实际上,这就是方法看跌期权的行为方式。来自文件:
如果使用数组参数调用,则在新行上写入每个元素。每个非字符串或数组的给定对象都将通过调用其to_s方法进行转换。如果没有参数调用,则输出单个换行符。
另一方面,Ruby中有p方法:
对于每个对象,直接向程序的标准输出写入obj.inspect,后面是换行符。
下面的代码将打印您期望的结果:
array_name.each do |i|
p i
endhttps://stackoverflow.com/questions/50222794
复制相似问题