以任何方式可能出现以下情况:我一直跑进奇数列表Hash作为自变量的散列
def thores_hammer(bling)
hammer_bling = { bling }
end
thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
由于提前感谢。
以任何方式可能出现以下情况:我一直跑进奇数列表Hash作为自变量的散列
def thores_hammer(bling)
hammer_bling = { bling }
end
thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
由于提前感谢。
你正在运行到一个错误的原因是 Hash
当thores_hammer
方法 被调用是隐式创建 - 所以当你{ bling }
你创建一个散列 只有一个键(它本身就是一个散列)并且没有值。因此 错误。
所有你需要做的就是放下大括号:
irb> def thores_hammer(bling)
hammer_bling = bling
end
#=> nil
irb> thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
#=> {:rubys=>5, :emeralds=>5, :souls=>333}
试试这个:
def thores_hammer(bling)
hammer_bling = bling
end
thores_hammer Hash[:rubys => 5, :emeralds => 5, :souls => 333]
什么你可能会打算做的是使散列的副本可以做的:
def thores_hammer(bling)
hammer_bling = bling.dup
end
它如果您打算长时间使用哈希,并且不确定修改副本的方法是否是一个好主意,因为它可以在其他地方使用,所以创建副本可能是一个好主意。
另外,Ruby中的花括号有几种不同的用法,例如声明块。
魔法!你救了我两次 – rubynewbie 2009-04-23 00:58:20