此时我正在使用uniq!获取集合中的唯一元素。是否可以根据两个参数获取唯一元素?换句话说,我想用uniq!根据 t.info 和 t.name 获取“唯一”元素。
collection.uniq! {|t| t.info }
此时我正在使用uniq!获取集合中的唯一元素。是否可以根据两个参数获取唯一元素?换句话说,我想用uniq!根据 t.info 和 t.name 获取“唯一”元素。
collection.uniq! {|t| t.info }
比较这些参数的数组:
T = Struct.new :info, :name
collection = [
T.new('a', 'b'),
T.new('a', 'b'),
T.new('a', 'a'),
]
collection.uniq! { |t| [t.info, t.name] }
#=> [#<struct T info="a", name="b">, #<struct T info="a", name="a">]
require 'pp'
require 'ostruct'
a = OpenStruct.new(a: 1, b: 2, c: 3)
b = OpenStruct.new(a: 2, b: 2, c: 3)
c = OpenStruct.new(a: 1, b: 2, c: 4)
pp [a, b, c].uniq # all different
pp [a, b, c].uniq { |t| [t.a, t.b] } # a and c are same