是否有一种优雅的写作方式
if o.class == ClassA or o.class == ClassB or o.class == ClassC
Run Code Online (Sandbox Code Playgroud)
我不是特意想要比较课程,这只是一个例子,我没有用布尔做事,所以我做不了类似的事情
if o.class == (ClassA or ClassB or ClassC)
Run Code Online (Sandbox Code Playgroud)
其他例子是
if string == "asdf" or string == "1337"
Run Code Online (Sandbox Code Playgroud)
我发现的唯一的东西似乎是
if [ClassA, ClassB, ClassC].include? o.class
Run Code Online (Sandbox Code Playgroud)
要么
if ["asdf", "1337"].include? string
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为最优雅的解决方案是你已经提供的解决方案,即使用'include?'.
只是为了多样化,您还可以选择在以下情况下使用案例:
case o
when ClassA, ClassB, ClassC
...
Run Code Online (Sandbox Code Playgroud)
另一种选择,我认为它比'包含'更具可读性?是创建自己的'in?',例如:
class Object
def in?(array)
array.include? self
end
end
Run Code Online (Sandbox Code Playgroud)
然后你可以使用
if o.class.in? [ClassA, ClassB, ClassC]
Run Code Online (Sandbox Code Playgroud)