红宝石的尴尬三元评估

古铁雷斯

我对红宝石中的三元表达感到非常困惑。

我有这个表达:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

评估与红宝石装订

来自分类Dev

PHP中的三元运算符的评估

来自分类Dev

javascript:三元运算符的意外评估行为

来自分类Dev

Javascript三元使用作为结果评估

来自分类Dev

javascript:三元运算符的意外评估行为

来自分类Dev

PHP中的三元运算符的评估

来自分类Dev

串联+三元

来自分类Dev

红宝石评估没有回合

来自分类Dev

评估红宝石中args的简便方法

来自分类Dev

三元运算符如何评估结果数据类型?

来自分类Dev

当lhs为false时,为什么以逻辑AND评估条件(三元)运算符

来自分类Dev

如何评估三元字符串表达式并识别值

来自分类Dev

GridView中控件的ASP.NET评估三元可见性

来自分类Dev

是否可以访问由三元条件运算符评估的值?

来自分类Dev

三元表达式无法评估未定义的变量

来自分类Dev

帕斯卡尔的红宝石三角

来自分类Dev

如果使用三元

来自分类Dev

“复杂” JavaScript三元

来自分类Dev

扩展三元表达

来自分类Dev

三元至短路

来自分类Dev

求和三元算法?

来自分类Dev

Django三元关系

来自分类Dev

扩展三元表达

来自分类Dev

意外的三元分配

来自分类Dev

三元级联宏

来自分类Dev

三元印刷操作

来自分类Dev

我想评估红宝石中的串联符号

来自分类Dev

为什么在状态更新之前通过 setTimeout 评估三元运算符的不可访问部分?

来自分类Dev

pyjade和三元条件失败?