0

この時点で、私は uniq! を使用しています。コレクション内の一意の要素を取得します。2 つのパラメーターに基づいて固有の要素を取得することは可能ですか? つまりuniqを使いたい!t.info と t.name の両方に基づいて「一意の」要素を取得します。

 collection.uniq! {|t| t.info }
4

2 に答える 2

5

これらのパラメーターの配列を比較します。

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">]
于 2013-06-27T02:37:48.167 に答える
1
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
于 2013-06-27T02:37:40.060 に答える