2012-04-27 6 views

答えて

262
if @players.exclude?(p.name) do 
    ... 
end 

activesupportのはArrayString両方にexclude?メソッドを追加します。これは純粋なRubyではなく、たくさんのRubyistsによって使用されています。

+1

テストに便利 – Swards

+0

多くの場合、はるかに明確です。 –

+4

[Documentation here](http://api.rubyonrails.org/classes/Enumerable.html#method-i-exclude-3F) – barnett

2

使用しない限り。ここで

unless @players.include?(p.name) do 
    ... 
end 
73

あなたが行く:

unless @players.include?(p.name) 
    ... 
end 

あなたは同様の技術詳細はRuby Style Guideを見ているかもしれません。

+0

スタイルガイドのアップ。ちょうど私が必要とした読書材料。 1つのステートメントに対して読み取り可能な語数は – Norris

+1

です。多くの場合、より良い使用ネゲート! Rubyの配列クラスに独自のメソッドを追加することができます。 –

+3

これを除外するといいですか?純粋なRubyのように答えてください。 – dscher

6

方法について:

unless @players.include?(p.name) do 
    .... 
end 
+0

私はネポティズムへの呼び出しを避けるためにちょうどdownvoteかもしれません;-) –

+0

人は、このサイトで答えが来るスピードで、私はいくつかの良いなしで任意の評判を取得するか分からない-ole nepotism!スタイルガイドのリンクは素敵です。 – ilasno

+2

それは高速ではない。それは徹底していることです。 (私が見つけました)=) –

5
module Enumerable 
    def does_not_include?(item) 
    !include?(item) 
    end 
end 

[OK]を、しかし真剣に、いない限りは正常に動作します。

+1

+1スニペットが表示されていればOKではありませんが、条件はもっと複雑かもしれません。私は、これらの無効化されたメソッドを持つことは便利だと思います。より宣言的なコードを許可します。 – tokland

1

あなたは1 Arrayで何かを含めることを確認する必要があるときunlessを使用することではなく、他に、exclude?include?の使用は非常に友好的である、例えば、単一include?句を持つ文の罰金ですが。

if @players.include? && @spectators.exclude? do 
    .... 
end 

しかしdizzy42は、上記の言うように、exclude?の使用はactivesupportの

0

はこのような何か試してみてください必要があります。それはそうすべての周辺のフレームワークを追加する必要はありません、純粋なRubyの、これを試してみてください

@players.include?(p.name) ? false : true 
1

if @players.include?(p.name) == false do 
    ... 
end 

私は同じようなロジックで苦労していました。数日、そしていくつかのフォーラムとQ &をチェックしたあと、少し役に立ったボードは、実際にはかなり単純でした。

関連する問題