2016-09-13 4 views
1

ここでは、2つの一連のハッシュを持つルビコードがあり、メソッドがあります。Ruby - 勝利方法の理解

VALID_CHOICES = { 
    'r' => 'rock', 
    'p' => 'paper', 
    'sc' => 'scissors', 
    'l' => 'lizard', 
    'sp' => 'spock' 
} 

WINNING_COMBO = { 
    'r' => ['sc', 'l'], 
    'p' => ['r', 'sp'], 
    'sc' => ['p', 'l'], 
    'l' => ['sp', 'p'], 
    'sp' => ['sc', 'r'] 
} 

def win?(first, second) 
    WINNING_COMBO[first].include?(second) 
end 

これは何が私にこの勝利を説明することができますか?方法はありますか?そしてそれはこれに似ていますか?

def win?(first, second) 
    (first == 'sc' && second == 'p') || 
    (first == 'p' && second == 'r') || 
    (first == 'r' && second == 'l') || 
    (first == 'l' && second == 'sp') || 
    (first == 'sp' && second == 'sc') || 
    (first == 'sc' && second == 'l') || 
    (first == 'l' && second == 'p') || 
    (first == 'p' && second == 'sp') || 
    (first == 'sp' && second == 'r') || 
    (first == 'r' && second == 'sc') 
end 

私は素人の用語やダミーがそのメソッドのために理解できるように説明を得ることができると思います。ごめんなさい。私は本当にあなたのアイデアが必要です。本当にありがとう!あなたが理解したいと思っています。

+0

_ "これはこれに似ていますか?" - [win]が期待どおりに動作するように[テスト](https://en.wikipedia.org/wiki/Unit_testing)を書きます。可能であれば、[テストファースト](https://en.wikipedia.org/wiki/Test-first)と記入してください。 – Stefan

答えて

1

この最初の部分WINNING_COMBO[first]は、WINNING_COMBOのエントリの1つを検索します。その配列は非常に値「SC」または「L」、これは希望のためにsecondの値が含まれている場合、我々はその後、確認...

WINNING_COMBO['r'] 
#=> ["sc", "l"] 

firstである場合、例えば、「R」、これは、アレイ['sc', 'l']を返します本当である:

WINNING_COMBO['r'].include?('sc') 
#=> true 

WINNING_COMBO['r'].include?('l') 
#=> true 

これは、個々の条件として出て記載されているすべての勝ちの組み合わせとなりましwin?方法と同じです。

-1
WINNING_COMBO[first] 

これが勝利のコンボ

include?(second) 

受賞コンボのための二番目のパラメータを取得する第一のパラメータを取得します。

+0

あなたはうまく説明できませんでした。短いメソッド表記法が長いものと等しいか類似しているなら、OPが尋ねる部分には答えなかった。あなたの答えは、OP –

+0

詳細については何の助けにもなりません。 –

関連する問題