从www.example.com访问局部变量class.newruby [duplicate]

vsmadaxz  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(147)

此问题在此处已有答案

Closures in Ruby with Module(1个答案)
12天前关闭。
我有一个关于ruby中作用域的问题,为什么baz方法不能访问变量foo,这似乎与直觉相反,因为baz的作用域包含在create_B的作用域中
第一个

uidvcgyl

uidvcgyl1#

关键字def创建了一个新的作用域。为了访问在外部定义的变量,可以使用define_method方法:

class A
  def self.create_B(foo)
    Class.new do 
       define_method(:baz) do
         p foo
       end
    end
  end
end

A.create_B(4).new.baz

# => 4

相关问题