我对Ruby还很陌生。我有下面的场景-我需要检查一个关键字在Ruby中是否是数组?就像这样-
if(value == array) { do something } else do something
如何使用ruby中的if条件来实现这一点?任何教导都将受到真正的赞赏。
tyu7yeag1#
可以使用.class获取Object的类,也可以使用.class.is_a?(Class)获取布尔响应:
.class
.class.is_a?(Class)
ary = [] ary.class => Array hsh = {} hsh.class => Hash float = 10.456 float.class => Float # and get boolean responses like this: hsh.class.is_a?(Hash) => true hsh.class.is_a?(Array) => false
因此,您可以独立处理每个Class。如果有很多潜在的类,请使用case语句:
Class
case
case value.class when Array # do something to the array when Hash # do something to the hash when Float # do something to the float when Integer # do something to the integer ... end
您可以使用.include?()
.include?()
array = ['a', 'b', 'c'] array.include?('c') => true array.include?('d') => false
举个例子:
if array.include?(value) # do something else # do something else end
lrpiutwd2#
if value.is_a?(Array) # do something else # do something else end
或
if value.kind_of?(Array) # do something else # do something else end
#kind_of?和#is_a?具有相同的行为。Ruby: kind_of? vs. instance_of? vs. is_a?
#kind_of?
#is_a?
2条答案
按热度按时间tyu7yeag1#
更新:
可以使用
.class
获取Object的类,也可以使用.class.is_a?(Class)
获取布尔响应:因此,您可以独立处理每个
Class
。如果有很多潜在的类,请使用case
语句:旧版:
您可以使用
.include?()
举个例子:
lrpiutwd2#
或
#kind_of?
和#is_a?
具有相同的行为。Ruby: kind_of? vs. instance_of? vs. is_a?