2009-09-06 9 views
5

ルビーで良い方法が列挙リストの重複を削除するためにあります(つまり、などを拒否する)Rubyは列挙リストに重複を削除

+0

(1)*は配列ではありませんが、(2)重複している可能性があることを覚えておいてください。範囲に重複はありません。 – Telemachus

+0

"列挙可能リスト"は非常に不明です。それはEnumeratorクラスのインスタンス変数ですか? – peterpengnz

答えて

10

配列のためには、

a = [ "a", "a", "b", "b", "c" ] 
a.uniq #=> ["a", "b", "c"] 

のでuniqの()メソッドを使用することができますあなただけの

(1..10).to_a.uniq 

または

%w{ant bat cat ant}.to_a.uniq 

ので、とにかくほぼすべてのメト場合実装すると、Arrayクラスとして返されます。

+1

'(1..10).to_a.uniq'は決して定義型の範囲では重複する要素を持つことができないので、決してタイプすることができません。 (または、私は非常に混乱している何かがありますか?) – Telemachus

+0

あなたはそうです、決してそれは重複しません。アイデアを出してください。別のサンプルを追加しました。ありがとうございます。 – Jirapong

+2

Fixnums以外の範囲で重複要素を生成することは技術的に可能です。必要なのは、あるオブジェクトxに対してx.succ == xということだけです。たとえば、フィボナッチ数を表すクラスでは、このプロパティが1になります。なぜそれを行うのかはわかりません。ほとんどの場合、それは狂気の兆候ですが、*可能です*。 – Chuck

2

まあ戦略は、配列から重複を配列および削除するためにそれらを変換することです。ところで、リストはどのような場合でもルビの配列なので、 "列挙可能リスト"の意味が分かりません

+1

私も "列挙可能リスト"と混同しています。配列の場合、それは本当に簡単です。それがEnumeratorクラスの場合は、より多くの思考が必要です。 – peterpengnz

1

オブジェクトに.uniqメソッドがない場合は、セットされた論理演算子を使用するのが好きです。

a = [2,3,3,5,5,5,6] # => [2, 3, 3, 5, 5, 5, 6] 
a | a # => [2, 3, 5, 6] 
関連する問題