ruby – 如何在1种方法中产生2个块
发布时间:2020-12-17 01:54:08 所属栏目:百科 来源:网络整理
导读:如何在同一方法中产生两个不同的块 示例代码: def by_two(n,a) yield n yield aendproc1 = proc {|x| p x * 2}proc2 = proc {|x| x + 100}by_two(10,300,proc1,proc2) 错误是这样的 – main.rb:7: syntax error,unexpected ',',expecting ')'by_two(10,proc
如何在同一方法中产生两个不同的块
示例代码: def by_two(n,a) yield n yield a end proc1 = proc {|x| p x * 2} proc2 = proc {|x| x + 100} by_two(10,300,&proc1,&proc2) 错误是这样的 – main.rb:7: syntax error,unexpected ',',expecting ')' by_two(10,&proc2) 有什么建议在哪里,哪些是错的?谢谢 解决方法
块是将单个匿名过程传递给方法的轻量级方法.因此,根据定义,不能将两个块传递给方法.它不仅在语义上是不可能的,甚至在句法上也是不可能的.
Ruby确实支持Procs形式的一流程序,因为它们只是像任何其他对象一样的对象,你可以根据需要传递它们中的任意数量: def by_two(n,a,proc1,proc2) proc1.(n) proc2.(a) end proc1 = proc {|x| p x * 2} proc2 = proc {|x| x + 100} by_two(10,proc2) # 20 # => 400 自从在Ruby 1.9中引入lambda文字以来,Procs在语法上几乎与块一样轻量级,因此不再有太大的区别: by_two(10,-> x { p x * 2 },-> x { x + 100 }) # 20 # => 400 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |