gpt4 book ai didi

ruby - "if"如何解释对象

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

假设我有以下内容:

class Foo
def inspect
false
end

def ==(other)
false == other
end
end

foo = Foo.new # => false
foo # => false
foo == false # => true
foo == true # => false

不过

if foo then 'hi' end
# => 'hi'

我期待的是

if false then 'hi' end
# => nil

我期待 foo 评估为 false 但事实并非如此。 if 如何评估 foo,为什么不是 false

最佳答案

在 Ruby 中只有两个对象被认为是“假的”:false(FalseClass)和nil(NilClass )。您不能让另一个对象模仿其中一个,因为 Ruby 运行时会检查这两个具体实例。

在您的示例中,您有一个 Foo 类的实例。它不是 falsenil,因此它被认为是“真实的”。没有办法让它评估为虚假值。

关于ruby - "if"如何解释对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296075/

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