2024-04-12 09:00:03

测试数组

正确的方法是什么:

is_array("something") # => false         (or 1)

is_array(["something", "else"]) # => true  (or > 1)

或者获取其中的条目数?


当前回答

(1、2、3).is_a吗?数组的计算结果为true。

其他回答

Try:

def is_array(a)
    a.class == Array
end

编辑:另一个答案比我的好得多。

您可能需要使用kind_of()。

>> s = "something"
=> "something"
>> s.kind_of?(Array)
=> false
>> s = ["something", "else"]
=> ["something", "else"]
>> s.kind_of?(Array)
=> true

(1、2、3).is_a吗?数组的计算结果为true。

你确定它需要是一个数组吗?您可以使用respond_to?(method),这样您的代码就可以用于类似的东西,不一定是数组(可能是其他一些可枚举的东西)。如果你确实需要一个数组,那么描述数组#kind\_of?方法是最好的。

['hello'].respond_to?('each')

听起来你想要的东西有一些项目的概念。因此,我建议看看它是否是可枚举的。这也保证了#count的存在。

例如,

[1,2,3].is_a? Enumerable
[1,2,3].count

注意,虽然size, length和count都适用于数组,但count在这里是正确的含义-(例如,'abc'。长度和abc。Size和abc都可以。Count不是这样工作的)。

注意:字符串is_a?可枚举的,所以也许这不是你想要的…这取决于你对数组的概念,比如object。