gpt4 book ai didi

ruby-on-rails - ruby 中尴尬的三元评估

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:22 25 4
gpt4 key购买 nike

我对 ruby​​ 中的一些三元表达式感到很困惑。

我有这样的表达:

puts respond_to? "greeting".to_sym ? "hello" : "bye"

当然,这不是我在我的应用程序中所做的,只是为了让您看到。

事情是上面的表达式返回

false

如果方法存在,什么时候应该返回 hello,如果不正确,什么时候应该返回 bye

如果我将表达式更改为

puts respond_to?("greeting".to_sym) ? "hello" : "bye"

它返回正确的东西,如果存在则返回“hello”,否则返回“bye”。

为什么会这样?关于 ruby​​ 中的三元表达式,有什么我不知道的吗?

只是为了让您知道我的应用程序中的正确代码是:

respond_to?(path.to_sym) ? self.send(path) : "#"

它返回数据库存储标题菜单的正确路径,如果它不存在,它会简单地放置一个“#”以避免错误。

最佳答案

没有括号,您的代码似乎被这样解释:

puts respond_to?("greeting".to_sym ? "hello" : "bye")

然后括号中的内容评估为“hello”,而 self 显然没有对此做出响应,因此 respond_to? 返回 false.

这就是为什么每当对代码的操作顺序有任何疑问时使用括号总是一个好主意;它使您的代码更具可读性,并消除了诸如此类的错误。

关于ruby-on-rails - ruby 中尴尬的三元评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com