将具有不同对象的数组分隔为 ruby 中的特定对象数组
Separating array with different objects into specific object arrays in ruby
假设我有一个包含不同类型对象的数组,例如:
[1,true,'hello',true,2,' ','world']
我正在尝试创建一个函数来输出一组数组,这些数组将这些对象分开。
[ [1,2] , ['hello', ' ', 'world'] , [true,true] ]
到目前为止我已经有了这个:
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
问题是当我这样做时显然出现错误:
value.class == i[0].class
这有点奇怪,因为对我来说这是有道理的。我是 ruby 的新手,希望能提供一些见解。
您的示例失败,因为您没有 return 在 inject
块的末尾更新 acc
。只需要在结束前加上acc
}
:
#...
end
acc
}
除此之外我会做这样的事情:
[1,true,'hello',true,2,' ','world'].group_by(&:class).values
#=> [[1, 2], [true, true], ["hello", " ", "world"]]
假设我有一个包含不同类型对象的数组,例如:
[1,true,'hello',true,2,' ','world']
我正在尝试创建一个函数来输出一组数组,这些数组将这些对象分开。
[ [1,2] , ['hello', ' ', 'world'] , [true,true] ]
到目前为止我已经有了这个:
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
问题是当我这样做时显然出现错误:
value.class == i[0].class
这有点奇怪,因为对我来说这是有道理的。我是 ruby 的新手,希望能提供一些见解。
您的示例失败,因为您没有 return 在 inject
块的末尾更新 acc
。只需要在结束前加上acc
}
:
#...
end
acc
}
除此之外我会做这样的事情:
[1,true,'hello',true,2,' ','world'].group_by(&:class).values
#=> [[1, 2], [true, true], ["hello", " ", "world"]]