新手问题 Ruby 里面 @topic.node&.name 这里的 & 是干什么用的?

sdfsd · 2020年08月11日 · 最后由 IChou 回复于 2020年08月15日 · 1812 次阅读

问个小白问题 模板里出现

<%= @topic.node&.name || '选择节点...' %>

这里的& 是干什么用的

https://ruby-china.org/topics/35195 这里有一篇文章,可以看一看

@topic.node&.name 相当于 @topic.node.try(:name),意思是@topic.node为 nil 的话,这里不会报错,最后结果也是 nil

yfscret 回复

还是有区别,如果@topic.node,不能响应name方法或者出现异常的话。使用@topic.node.try(:name),是不会报错的;但是@topic.node&.name,前者不为空是会报错的。

tinyfeng 回复

为什么会报错贴下报错信息看下

sundar_z 回复

2.try(:test1)

2&.test1

后者会抛出 NoMethodError

等效与 c# 的

topic?.node?.name
tinyfeng 回复

果然,学习了

& 就是「单身狗」符号啊,它表示 node 可能并没有对象 😂 😂

需要 登录 后方可回复, 如果你还没有账号请 注册新账号