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

sdfsd · August 11, 2020 · Last by IChou replied at August 15, 2020 · 1812 hits

问个小白问题 模板里出现

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

这里的& 是干什么用的

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

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

Reply to yfscret

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

Reply to tinyfeng

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

Reply to sundar_z

2.try(:test1)

2&.test1

后者会抛出 NoMethodError

等效与 c# 的

topic?.node?.name
Reply to tinyfeng

果然,学习了

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

You need to Sign in before reply, if you don't have an account, please Sign up first.