我知道这可能是一个愚蠢的问题,但我不知道如何创建一个接受参数散列的ruby方法。我的意思是,在Rails中,我想使用这样的方法:
login_success :msg => "Success!", :gotourl => user_url
接受这种参数的方法的原型是什么?我该如何阅读它们?
发布于 2009-02-24 20:25:10
如果你用散列语法将参数传递给Ruby函数,Ruby会认为这就是你的目标。因此:
def login_success(hsh = {})
puts hsh[:msg]
end
发布于 2009-02-24 20:54:12
要记住的关键一点是,如果散列参数是函数的最后一个参数,则只能使用省略散列字符{}的语法。所以你可以做Allyn做过的事情,这会起作用的。也是
def login_success(name, hsh)
puts "User #{name} logged in with #{hsh[:some_hash_key]}"
end
你可以用下面的命令调用它
login_success "username", :time => Time.now, :some_hash_key => "some text"
但是,如果散列不是最后一个参数,则必须用{}将散列元素括起来。
发布于 2015-04-30 21:36:18
随着Ruby 2.0中关键字参数的出现,您现在可以这样做
def login_success(msg:"Default", gotourl:"http://example.com")
puts msg
redirect_to gotourl
end
在Ruby 2.1中,您可以省略默认值,
def login_success(msg:, gotourl:)
puts msg
redirect_to gotourl
end
调用时,省略没有默认值的参数将引发ArgumentError
https://stackoverflow.com/questions/583423
复制相似问题