gpt4 book ai didi

ruby-on-rails - Ruby case 语句未按预期执行

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

仅供引用,使用 Rails。

给定 user = User.find(1)

当它应该返回 self.do_something_with_user 的结果时,这个 case 语句返回 nil

def case_method
case self.class
when User
self.do_something_with_user # assume does not return nil
when SomeOtherClass
self.do_something_else
else
nil
end
end

user.case_method # => nil

我错过了什么?使用 pry,self.class == User 返回 true。

最佳答案

Ruby 的 case 语句比大多数其他 switch 语句灵活得多。它使用 === 运算符,而不是 == 运算符。类沿

行定义 === 运算符

def ===(其他) other.is_a? self#self 是类 结束

所以,您真正想要的是:

def case_method
case self
when User
do_something_with_user
when SomeOtherClass
do_something_else
end # else is un-needed as it will return nil by default
end

关于ruby-on-rails - Ruby case 语句未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14452271/

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