簡體   English   中英

Ruby - 理解獲勝方法

[英]Ruby - Understanding Winning Method

我這里有一個 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

我希望我能用外行的術語或傻瓜可以理解的方式來解釋該方法。 對不起,這里的假人。 我真的需要你的想法。 非常感謝! 希望你能理解。

第一部分WINNING_COMBO[first]查找中的一個條目WINNING_COMBO 例如,如果first是“r”,那么這將返回數組['sc', 'l']

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

...然后我們檢查該數組是否包含second值,因此對於值“sc”或“l”,這將是真的:

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

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

這相當於更長的win? 將所有獲勝組合列為個別條件的方法。

WINNING_COMBO[first]

這將獲得獲勝組合的第一個參數

include?(second)

獲取獲勝組合的第二個參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM