以下是否有可能?我一直跑进哈希的奇数列表
def thores_hammer(bling)
hammer_bling = { bling }
end
thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
提前致谢。
答案 0 :(得分:3)
你遇到错误的原因是
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}
答案 1 :(得分:2)
你可能打算做的是复制哈希,可以这样做:
def thores_hammer(bling)
hammer_bling = bling.dup
end
如果您打算长时间使用Hash并且不确定是否修改了该方法,那么制作副本可能是一个好主意,因为它可以被使用在其他地方。
此外,Ruby中的花括号有几种不同的用法,例如声明块。
答案 2 :(得分:1)
试试这个:
def thores_hammer(bling)
hammer_bling = bling
end
thores_hammer Hash[:rubys => 5, :emeralds => 5, :souls => 333]