Ruby 在块内运行方法类
如何在ruby中的块中使用实例变量和方法Ruby 在块内运行方法类,ruby,Ruby,如何在ruby中的块中使用实例变量和方法 class Foo @var = "my var" def meth() "my method" end Module.something do |variable| p @var #=> Undefined p meth() #=> Undefined end end 我不确定自己是否完全理解上下文,但这可能有助于: class Foo def initialize @va
class Foo
@var = "my var"
def meth()
"my method"
end
Module.something do |variable|
p @var #=> Undefined
p meth() #=> Undefined
end
end
我不确定自己是否完全理解上下文,但这可能有助于:
class Foo
def initialize
@var = "my var"
end
def meth()
"my method"
end
def fee
AModule.something do |variable|
p @var
p meth()
p variable
end
end
end
# test:
module AModule
def self.something
yield "bar"
end
end
foo = Foo.new
foo.fee
您可以使用
instance\u eval
,但您需要一个实例来调用它。这很混乱,只会给您带来麻烦。我将显式地传递var(或self)并通过其方法访问它。如果期望您能够从外部关闭一些东西,那么Module.something编写得很糟糕假设Module是一个外部库。我无法修改模块。但我需要使用实例中的数据。如果模块是外部的,您应该传入它需要的内容。模块的编写者无法知道您的类将定义什么。