我有一个具有任意数量参数的函数。我的功能如下:
sum(n, *rest)
如何遍历数组
rest
,以便它检查参数是否为Fixnum
,如果为,则对其求和,否则不执行任何操作?例如:sum(5,1,2,k,D,3)
# => 6
最佳答案
另一种方式(尽管我更喜欢@arup使用grep
):
a.group_by(&:class)[Fixnum].reduce(0,:+)
a = [1, :cat, 3, 'dog']
b = a.group_by(&:class) #=> {Fixnum=>[1,3],Symbol=>[:cat],String=>["dog"]}
c = b[Fixnum] #=> [1,3]
reduce(0,:+) #=> 4
我假设如果数组不包含fixnum,则返回零。在这种情况下,如果要返回nil,则将
reduce(0,:+)
更改为reduce(:+)
。关于ruby - 计数Ruby数组中的Fixnums,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22170017/