gpt4 book ai didi

arrays - 为什么 'inspect' 打印数组但不使用 'inspect' 放置每个元素?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:27 24 4
gpt4 key购买 nike

我有一个嵌套数组:

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

上面的第二个和第三个代码给了我相同的输出,它不是数组而是每个数组中的实际元素。这是为什么?

最佳答案

其实方法是这样的puts表现。来自文档:

If called with an array argument, writes each element on a new line. Each given object that isn't a string or array will be converted by calling its to_s method. If called without arguments, outputs a single newline.

另一方面,Ruby 中有p 方法:

For each object, directly writes obj.inspect followed by a newline to the program’s standard output.

以下代码将打印您期望的结果:

array_name.each do |i|
p i
end

关于arrays - 为什么 'inspect' 打印数组但不使用 'inspect' 放置每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50222794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com