现有一函数 a,需要 hash 形式的参数
def a(options={}) blabla # end
又有一函数 b 需要调用 a
def b(opt={}) # a(opt) ## 这里如何写? 直接写opt报错 end
调用 b
b({:a => '11', :b => '22'}) #这里的参数接是a需要的hash,会直接传给a
方法名是小写,另外那个 blabla 是什么意思
#1 楼 @zlfera 谢谢,已修正 blablabla 你就当成 some thing,无所谓他的具体内容。
#2 楼 @leopku 被我发现了
@leopku 直接传就好了...
实测一切正常。不知道你那里出现什么错误?
irb(main):027:0> def a(opt={}) irb(main):028:1> puts opt.to_s irb(main):029:1> end => nil irb(main):030:0> def b(opt2={}) irb(main):031:1> a(opt2) irb(main):032:1> end => nil irb(main):033:0> dic = {:abc=> 1,:cde => 2} => {:abc=>1, :cde=>2} irb(main):034:0> b(dic) {:abc=>1, :cde=>2} => nil irb(main):035:0> b({:a=> '11',:b => '22'}) {:a=>"11", :b=>"22"} => nil irb(main):036:0>
多谢楼上各位 被两个问题整晕了 一是 hash 参数 在非最后一个位置时省略了花括号 二是 RestClient 传参
一并多谢 @jasl @蓬蒿人 @Karma 等在 Q 群里的热心解答
@leopku 如果是 Ruby2.0,请使用关键字参数:
hash = {a:1, b:1} def foo(**hash) puts hash.inspect end def bar(**hash) foo(hash) end