【发布时间】:2019-11-10 13:44:20
【问题描述】:
我正在尝试构建一个石头剪刀布游戏,在查看其他人的代码时,我注意到有些人正在使用“to_sym”。它们有一个散列,一个字符串作为键,一个数组有两个字符串元素作为键。我试图弄清楚他们为什么会这样做,但我迷路了。
例子:
WIN_CONDITIONS = { rock: ["lizard", "scissors"],
paper: ["rock", "spock"],
scissors: ["paper", "lizard"],
lizard: ["paper", "spock"],
spock: ["scissors", "rock"]
}
def win?(first, second)
WIN_CONDITIONS[first.to_sym].include?(second)
end
【问题讨论】:
-
作为一种跟进,为什么有人要使用符号?为什么不直接使用字符串?通常,当您需要“类似字符串”但它应该是 CODE 而不是 DATA 的一部分时,首选符号。它们是不可变的(无法更改它们,这可以在很多方面保护您),内存中只有一个副本(与创建和丢弃的字符串不同),并且它们通常是非常好的标识符。跨度>
-
感谢您提供的信息!