arrays - ruby 中数组的 &.each 和 .each 之间的区别?

标签 arrays ruby

这个问题在这里已经有了答案:





What does &. (ampersand dot) mean in Ruby?

(5 个回答)


2年前关闭。



irb(main):007:0> %w[1 2 3 4 5]&.each { |a| puts a }
1
2
3
4
5
=> ["1", "2", "3", "4", "5"]
irb(main):008:0> %w[1 2 3 4 5].each { |a| puts a }
1
2
3
4
5
=> ["1", "2", "3", "4", "5"]

两个&.each.each似乎给出了相同的结果

ruby-doc似乎没有关于此功能的任何内容

两者有什么区别?

最佳答案

&.each是运算符和方法。 each只是一种方法。

&., called “safe navigation operator”, allows to skip method call when receiver is nil. It returns nil and doesn't evaluate method's arguments if the call is skipped.



所以,如果接收者是nil (在您的示例中并非如此)它只会返回 nil因为它不响应each :
nil&.each
# nil

否则,在对象中调用任何未定义的方法都会抛出 NoMethodError。 .这就是您将在第二个示例中得到的内容:
nil.each
# ...
# NoMethodError (undefined method `each' for nil:NilClass)

有关安全导航运算符(operator)的文档位于 Calling Methods文档。而对于 each它在 Array .

关于arrays - ruby 中数组的 &.each 和 .each 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208524/

相关文章:

javascript - 在javascript中用随机数填充二维数组

c++ - 数组删除给出 EXC_BAD_ACCESS 错误

c - C中的三维字符数组

ruby - Sinatra 部分数据?

ruby - 检查低效的正则表达式

Java ArrayList拆分每个对象

php - 使用PHP将数组插入数据库

ruby - 在 Amazon S3 对象上设置 noindex

javascript - 单击 Rails 时显示原始照片

ruby - nokogiri doc.xpath ('head' ) 返回 nil