我正在尝试使用参数作为我的键来查找哈希中的值,而我只是混淆了为什么我无法通过第一种方式获得值。我是Ruby的新手。
3
11111
22222
33333
编辑:
def getCards(player,hash)
a =$player
puts "a = "+a.to_s
puts "a.class = "+a.class.to_s
puts " hash[:a]"+" #{hash[:a]}"
puts " hash[:'1']"+" #{hash[:"1"]}"
end
答案 0 :(得分:2)
请注意,Ruby不是PHP或Perl,因此应该是player
而不是$player
。参数名称及其作为变量的相应用途是相同的。
$player
指的是该名称的全局变量,它是不相关的,除非另有设置,否则将被假定为未定义。
现在,如果按hash[:a]
你的意思是使用你已分配给a
的玩家值来访问密钥下的哈希内容,那么你真正想要的是:
hash[player]
其中表示使用该键查找条目。 a
在这种情况下是变量,:a
是符号“a”,它只是一个常量,就像标签一样,与变量无关。
不要忘记"#{x}"
等同于x.to_s
所以只使用插值代替这种笨拙的"..." + x.to_s
连接。
要记住的另一件事是,Ruby案例具有重要意义。变量和方法名称应遵循get_cards
样式。类是ClassName
,常量类似于CONSTANT_NAME
。