Dav*_*Nix 3 ruby ruby-on-rails
Fyi,使用Rails.
特定 user = User.find(1)
这个case语句nil在返回结果时返回self.do_something_with_user.
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
Run Code Online (Sandbox Code Playgroud)
我错过了什么?使用pry,self.class == User返回true.
Ruby的case陈述比大多数其他switch陈述更灵活.它使用===操作员,而不是==操作员.类定义了===运算符
def ===(其他)other.is_a?自我#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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |