我遇到了这行ruby代码.&.在这里意味着什么?

@object&.method

推荐答案

它被称为安全导航操作员.Ruby 2.3.0中引入了它,它允许您在对象上调用方法,而不用担心对象可能是nil(避免了undefined method for nil:NilClass错误),类似于try method in Rails.

这样你就可以写作了

@person&.spouse&.name

而不是

@person.spouse.name if @person && @person.spouse

Docs人中:

my_object.my_method

这会将my_method消息发送到my_object.任何

您可以使用&.来指定接收器,然后不调用my_method

Ruby相关问答推荐

Ruby错误-应为数组或字符串,已获取哈希

如何保证散列中的对象不完全相同

获取用于传递参数的变量名称

警告 Selenium [弃用] Manager#logs 已弃用.使用 Chrome::Driver#logs 代替

Ruby 3 从多个预定纤程中收集结果

Ruby 匹配第一次出现的字符串以进行 gsub 替换

我可以在 Ruby 的 heredoc 中访问变量吗?

如何在 ruby​​ 中列出当前范围内的当前可用对象?

如何调试/显示使用 RestClient 发送的请求

如何在不按 Enter 的情况下获取单个字符?

将haml标签放入link_to helper

我不明白Ruby本地范围(local scope)

动态设置 Ruby 对象的属性

Ruby 中的标准文件命名约定

在本地覆盖 Vagrant 配置设置(每个开发人员)

是否可以使用 Ruby 读取文件的修改日期?

有条件的数组的第一个元素

Ruby 实例变量何时设置?

*nix 是什么意思?

如何解决/usr/bin/env: ruby​​_executable_hooks: No such file or directory?