3 ruby
我在这里有一个哈希:
VALID_CHOICES = {
'r' => 'rock',
'p' => 'paper',
'sc' => 'scissors',
'l' => 'lizard',
'sp' => 'spock'
}
Run Code Online (Sandbox Code Playgroud)
并且在这里基本比较一种方法:
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
Run Code Online (Sandbox Code Playgroud)
如何在非常简洁的代码中重写我的方法,这意味着完全相同的事情?任何的想法?是否可以使用哈希来做到这一点?
您应该为每个令牌赢得的内容定义明确的规则:
WINS = {
'r' => %w{l sc},
'p' => %w{r sp},
'sc' => %w{p l},
'l' => %w{p sp},
'sp' => %w{r sc}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用简单查找来确定胜利:
def win?(first, second)
WINS[first].include?(second)
end
Run Code Online (Sandbox Code Playgroud)
虽然可能有几种"聪明"的方法可以避免明确的结构WINS,但明确的规则更容易理解 - 因此更易于维护.代码中的简洁性被认为是一个积极的属性,它提高了代码的可读性.简单到极致导致代码难以理解的东西不是要努力的东西.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |