初始化()中的Ruby proc与lambda
发布时间:2020-12-17 03:03:06 所属栏目:百科 来源:网络整理
导读:我今天早上发现proc.new在类初始化方法中工作,但不是lambda.具体来说,我的意思是: class TestClass attr_reader :proc,:lambda def initialize @proc = Proc.new {puts "Hello from Proc"} @lambda = lambda {puts "Hello from lambda"} endendc = TestClas
我今天早上发现proc.new在类初始化方法中工作,但不是lambda.具体来说,我的意思是:
class TestClass attr_reader :proc,:lambda def initialize @proc = Proc.new {puts "Hello from Proc"} @lambda = lambda {puts "Hello from lambda"} end end c = TestClass.new c.proc.call c.lambda.call 在上面的例子中,结果将是: Hello from Proc test.rb:14:in `<main>': undefined method `call' for nil:NilClass (NoMethodError) 这是为什么? 谢谢! 解决方法
你定义了一个名为lambda的attr_accessor的事实是隐藏了创建一个块的原始lambda方法(所以你的代码实际上隐藏了Ruby的lambda).您需要为该属性命名其他内容才能使其工作:
class TestClass attr_reader :proc,:_lambda def initialize @proc = Proc.new {puts "Hello from Proc"} @_lambda = lambda {puts "Hello from lambda"} end end c = TestClass.new c.proc.call c._lambda.call (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |