首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么“检查”打印数组,而不使用“检查”放置每个元素?

为什么“检查”打印数组,而不使用“检查”放置每个元素?
EN

Stack Overflow用户
提问于 2018-05-07 21:35:31
回答 1查看 67关注 0票数 3

我有一个嵌套数组:

代码语言:javascript
运行
复制
array_name = [
  ["Alice", "pizza", "soccer"],
  ["Steve", "sushi", "hockey"],
  ["Alex", "pasta", "none"]
]

当我在循环中使用inspect时:

代码语言:javascript
运行
复制
array_name.each do |i|
  puts i.inspect
end

它的产出如下:

代码语言:javascript
运行
复制
["Alice", "pizza", "soccer"]
["Steve", "sushi", "hockey"]
["Alex", "pasta", "none"]

但是,使用puts来打印来自每个单独数组的每个元素:

代码语言:javascript
运行
复制
array_name.each do |i|
  puts i
end

产出:

代码语言:javascript
运行
复制
Alice
pizza
soccer
Steve
sushi
hockey
Alex
pasta
none

为什么array_name.inspect像上面那样输出整个数组?

我读到inspect试图打印编码版本。那么,我不明白为什么下面显示的输出与上面的第二段代码相同:

代码语言:javascript
运行
复制
array_name.each do |i|
  i.each do |sub_i|
    puts sub_i
  end
end

产出:

代码语言:javascript
运行
复制
Alice
pizza
soccer
Steve
sushi
hockey
Alex
pasta
none

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-07 21:49:30

实际上,这就是方法看跌期权的行为方式。来自文件:

如果使用数组参数调用,则在新行上写入每个元素。每个非字符串或数组的给定对象都将通过调用其to_s方法进行转换。如果没有参数调用,则输出单个换行符。

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

对于每个对象,直接向程序的标准输出写入obj.inspect,后面是换行符。

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

代码语言:javascript
运行
复制
array_name.each do |i|
  p i
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50222794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档