我对红宝石中的三元表达感到非常困惑。
我有这个表达:
puts respond_to? "greeting".to_sym ? "hello" : "bye"
当然,那不是我在我的应用程序中所做的,只是供您查看。
问题是上面的表达式返回
false
什么时候应该返回hello
该方法是否存在(bye
如果不正确)?
如果我将表达式更改为
puts respond_to?("greeting".to_sym) ? "hello" : "bye"
它返回正确的内容,如果存在则返回“ hello”,否则返回“ bye”。
为什么会这样呢?关于红宝石中的三元表达,我是否不知道?
只是为了让您知道我的应用程序中正确的代码是:
respond_to?(path.to_sym) ? self.send(path) : "#"
它返回数据库存储的头菜单的正确路径,如果不存在,则只需输入“#”即可避免错误。
如果您没有对response_to的括号,则评估会像这样发生
"greeting".to_sym ? "hello" : "bye" #results in "hello"
puts respond_to? "hello" #results in false
三元表达式将首先在不带括号的情况下求值 respond_to
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句