首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解puts输出

了解puts输出
EN

Stack Overflow用户
提问于 2016-12-02 05:13:18
回答 2查看 20关注 0票数 0

我正在尝试理解使用puts时的输出。我知道puts实际上返回nil,然而,我在处理散列时遇到了一些问题。

我希望下面的代码块使用字符串插值以特定格式输出每个键/值对,但是,即使puts按预期工作,我注意到我的终端也打印了整个散列,如下所示。我想知道如何防止这种情况发生。

代码语言:javascript
复制
@hash.each do |key,val|
    puts "[#{key}] '#{val}'"
end 

[fish] 'aquatic animal'
[zebra] 'African land animal with stripes'
[apple] 'fruit'
=> {"fish"=>"aquatic animal", "zebra"=>"African land animal with stripes", "apple"=>"fruit"}
EN

回答 2

Stack Overflow用户

发布于 2016-12-02 05:14:21

each方法总是返回它正在迭代的内容,它不返回块提供的值。假设这是为了让您可以将多个each调用链接在一起,以便在必要时多次运行某些内容。

请记住,接受块的方法没有义务使用这些块返回的任何值,甚至也没有义务运行块。

正如铁皮人指出的那样,这里的显示实际上是irb REPL的产物,代表“读取-评估-打印-循环”的东西。您将看到计算each调用的结果,即返回值。

票数 1
EN

Stack Overflow用户

发布于 2016-12-02 05:31:37

终端总是输出最后一个方法的结果,在你的例子中是each。每一个都返回集合,所以它输出集合。您可以稍微更改代码以返回nil,这样可以防止长时间的输出。

代码语言:javascript
复制
@hash.each do |key,val|
    puts "[#{key}] '#{val}'"
end; nil
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40920476

复制
相关文章

相似问题

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