Man*_*iro 0 ruby arrays object
想象一下,我有一个包含不同类型对象的数组,例如:
[1,true,'hello',true,2,' ','world']
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个函数,该函数输出一组数组,这些对象是分开的.
[ [1,2] , ['hello', ' ', 'world'] , [true,true] ]
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经来了:
def same_object arg
arg.inject([]){ |acc,value|
flag = 0
acc.each do |i|
if i[0] != nil && value.class == i[0].class
i << value
flag = 1
end
end
if flag == 0
acc << [value]
end
}
end
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样做时,显然我得到了一个错误:
value.class == i[0].class
Run Code Online (Sandbox Code Playgroud)
这有点奇怪,因为对我来说这是有道理的.我是红宝石的新手,我很欣赏一些见解.
您的示例失败,因为您不会acc
在inject
块结束时返回更新.只需acc
在结束前添加}
:
#...
end
acc
}
Run Code Online (Sandbox Code Playgroud)
除此之外,我会做这样的事情:
[1,true,'hello',true,2,' ','world'].group_by(&:class).values
#=> [[1, 2], [true, true], ["hello", " ", "world"]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33 次 |
最近记录: |