gpt4 book ai didi

ruby - 为什么 instance_eval 对 Proc 成功但对 Lambda 不成功?

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:51 24 4
gpt4 key购买 nike

我有以下类(class):

class User
code1 = Proc.new { }
code2 = lambda { }

define_method :test do
self.class.instance_eval &code1
self.class.instance_eval &code2
end
end

User.new.test

为什么第二个instance_eval 失败并出现错误数量的参数(1 代表 0) 错误?

最佳答案

instance_eval 正在将 self (User) 生成给 lambda。 Lambda 对其参数有特殊要求 - 方法也是如此 - 如果参数太少/太多,将引发 ArgumentError

class User
code1 = Proc.new { |x| x == User } # true
code2 = lambda { |x| x == User } # true

define_method :test do
self.class.instance_eval &code1
self.class.instance_eval &code2
end
end

相关:What's the difference between a proc and a lambda in Ruby?

关于ruby - 为什么 instance_eval 对 Proc 成功但对 Lambda 不成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com