正确的方法是什么:
is_array("something") # => false (or 1)
is_array(["something", "else"]) # => true (or > 1)
或者获取其中的条目数?
正确的方法是什么:
is_array("something") # => false (or 1)
is_array(["something", "else"]) # => true (or > 1)
或者获取其中的条目数?
当前回答
您可能需要使用kind_of()。
>> s = "something"
=> "something"
>> s.kind_of?(Array)
=> false
>> s = ["something", "else"]
=> ["something", "else"]
>> s.kind_of?(Array)
=> true
其他回答
您可能需要使用kind_of()。
>> s = "something"
=> "something"
>> s.kind_of?(Array)
=> false
>> s = ["something", "else"]
=> ["something", "else"]
>> s.kind_of?(Array)
=> true
Try:
def is_array(a)
a.class == Array
end
编辑:另一个答案比我的好得多。
(1、2、3).is_a吗?数组的计算结果为true。
你确定它需要是一个数组吗?您可以使用respond_to?(method),这样您的代码就可以用于类似的东西,不一定是数组(可能是其他一些可枚举的东西)。如果你确实需要一个数组,那么描述数组#kind\_of?方法是最好的。
['hello'].respond_to?('each')
也可以考虑使用Array()。Ruby社区风格指南:
处理时使用Array()而不是显式的Array check或[*var] 一个你想作为数组处理的变量,但你不确定 它是一个数组。
# bad
paths = [paths] unless paths.is_a? Array
paths.each { |path| do_something(path) }
# bad (always creates a new Array instance)
[*paths].each { |path| do_something(path) }
# good (and a bit more readable)
Array(paths).each { |path| do_something(path) }