大佬教程收集整理的这篇文章主要介绍了这是方法#to_proc中的错误? (Ruby 1.8.7),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
def foo(arg); p arg; end
我可以用一个空数组来调用它:
foo([]) # prints []
我也可以将其保存为Method对象,并使用一个空数组来调用它,结果相同:
@H_410_2@method(:foo).call([]) # prints []但是,如果将Method对象转换为Proc并使用空数组进行调用,则会得到一个ArgumentError:
@H_410_2@method(:foo).to_proc.call([]) # ArgumentError: wrong number of arguments (0 for 1) # from (irb):4:in `foo' # from (irb):4:in `to_proc' # from (irb):10:in `call'我预计它的行为与前两种情况相同.相反,它似乎表现得好像我写了foo(* []).但是,如果我用非空数组调用它,它的行为方式与我预期的一样:
@H_410_2@method(:foo).to_proc.call([1]) # prints [1]所以它破坏了参数,但只有当参数恰好是一个空数组时.只有我调用Method#to_proc.
我对于Method或Proc如何工作的理解有什么差距,还是这个bug?
我正在运行Ruby 1.8.7-p299.我在1.8.6-p399和1.8.7头观察到相同的行为.但是,我在1.9.1-p378中看不到它:当用空数组调用时,所有三种形式的print []都被打印出来.
以上是大佬教程为你收集整理的这是方法#to_proc中的错误? (Ruby 1.8.7)全部内容,希望文章能够帮你解决这是方法#to_proc中的错误? (Ruby 1.8.7)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。