我可以将一个本身期望块??的块传递给ruby中的instance_exec吗?
发布时间:2020-12-16 19:01:53 所属栏目:百科 来源:网络整理
导读:我期待代码 foo=proc{puts "foo"}instance_exec(1,2,3,foo) do |*args,block| puts *args block.call puts "bar"end 输出 123foobar 但得到了错误 both block arg and actual block given 我可以将一个本身期望块??的块传递给ruby中的instance_exec吗? 解决
我期待代码
foo=proc{puts "foo"} instance_exec(1,2,3,&foo) do |*args,&block| puts *args block.call puts "bar" end 输出 1 2 3 foo bar 但得到了错误 both block arg and actual block given 我可以将一个本身期望块??的块传递给ruby中的instance_exec吗? 解决方法
& foo尝试将foo作为块传递给instance_exec,并且您已经传递了一个显式块.省略&符号就像任何其他参数一样发送foo(除了它是一个Proc实例).所以,试试这个:
instance_exec(1,foo) do |*args,block| puts *args block.call puts "bar" end 这也意味着您可以执行以下操作: bar = proc{ |*args,block| puts *args block.call puts "bar" } instance_exec(1,foo,&bar) 并获得相同的结果. 更多信息,请点击Difference between block and &block in Ruby (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |