def printer_outside_class(value)
puts value
end
class Prints
attr_accessor :value
def initialize(a)
@value = a
end
printer_outside_class(@value)
end
Prints.new(100)
我没有得到任何输出,而是抛出了警告“实例变量@value未初始化”。 Ruby逐行执行该类,因此在调用initialize
函数之前,将调用printer_outside_class(value)
。
是否可以通过某种方式将变量value
传递给外部printer_outside_class(@value)
函数调用?
value
应该从外部传递,而不必通过构造函数传递。
注意:我可以随意更改构造函数,可以向Prints
类添加任意代码,可以添加新类,并且可以随意调用Prints
类。但是,我将无法在函数定义内移动函数调用printer_outside_class(@value)
。
答案 0 :(得分:1)
如果我正确理解了这个问题,那么解决方法是在类级别使用实例变量:
def printer_outside_class(value)
puts value
end
class Prints
@value = 100
def self.value; @value; end
def self.value=(neu); @value = neu; end
def initialize(a)
self.class.value = a
printer_outside_class(a)
end
printer_outside_class(value)
end
Prints.new(123)