使用Ruby散列键作为参数

时间:2017-10-09 01:50:23

标签: ruby

我正在尝试使用参数作为我的键来查找哈希中的值,而我只是混淆了为什么我无法通过第一种方式获得值。我是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

1 个答案:

答案 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