如何创建如下方法:
def process_by_type *things
things.each {|thing|
case thing.type
when String
when Array
when Hash
end
end
}
end
我知道我可以使用 kind_of?(Array) 等。但我认为这会更简洁,而且我无法在 Class:Object 文档页面上找到它的方法。
最佳答案
像你正在做的那样使用案例陈述的形式:
case obj
when expr1
# do something
when expr2
# do something else
end
相当于执行一堆 if expr === obj (三等号比较)。当 expr 是类类型时,如果 obj 是 expr 的类型或 expr 的子类,则 === 比较返回 true。
因此,以下内容应该符合您的预期:
def process_by_type *things
things.each {|thing|
case thing
when String
puts "#{thing} is a string"
when Array
puts "#{thing} is an array"
when Hash
puts "#{thing} is a hash"
else
puts "#{thing} is something else"
end
}
end
关于ruby-on-rails - 如何检查 ruby 中属性的类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317247/