gpt4 book ai didi

ruby-on-rails - 奇怪的 && 运算符行为?

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:02 25 4
gpt4 key购买 nike

使用 Ruby 2.1.1 和 Rails 3.2.13,我希望下面的行返回 true 或 false,但是当 href 为 nil 时,hasHref 设置为 nil :

hasHref = (defined?(href) && !href.blank?)

我知道如何解决这个问题,但很好奇为什么它没有按我的预期工作。它按照我在 Ruby 1.8.7 中的预期工作。

最佳答案

foo && bar 不返回 truefalse。当 foonot trueish 时返回 foo ,当 foo 时返回 bar 真实的trueish 的定义:不是 nilfalse

defined? 从不返回 truefalse,它返回类型描述。如果未定义 href,则 defined?(href) 返回 nil(这不是 trueish),因此 nil 被返回。

如果您确实需要 truefalse,请将您的代码更改为:

hasHref = !!(defined?(href) && !href.blank?)

有关 defined? 的可能返回值,请参阅:http://ruby-doc.com/docs/ProgrammingRuby/html/tut_expressions.html#UG

关于ruby-on-rails - 奇怪的 && 运算符行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888804/

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