问个小白问题 模板里出现
<%= @topic.node&.name || '选择节点...' %>
这里的& 是干什么用的
https://ruby-china.org/topics/35195 这里有一篇文章,可以看一看
@topic.node&.name 相当于 @topic.node.try(:name),意思是@topic.node为 nil 的话,这里不会报错,最后结果也是 nil
还是有区别,如果@topic.node,不能响应name方法或者出现异常的话。使用@topic.node.try(:name),是不会报错的;但是@topic.node&.name,前者不为空是会报错的。
@topic.node
name
@topic.node.try(:name)
@topic.node&.name
为什么会报错贴下报错信息看下
2.try(:test1)
2&.test1
后者会抛出 NoMethodError
等效与 c# 的
topic?.node?.name
果然,学习了
https://medium.com/@pk60905/rails-try-try-%E5%92%8C-safe-navigation-operator-8503ad9b958a 可以看看这里
& 就是「单身狗」符号啊,它表示 node 可能并没有对象