class MySelf
@@name = 'jonathan'
def self.name
@@name
end
end
MySelf.instance_eval {@@name}
MySelf.class_eval {@@name}
抛出:
NameError: uninitialized class variable @@collection in Object
但
MySelf.instance_eval {name}
MySelf.class_eval {name}
都工作。
如何使用@@name
/ instance_eval
访问静态变量class_eval
,或者如何从类外部分配值?
答案 0 :(得分:0)
抛出的错误是因为MySelf.instance_eval('@@name')
正确抛出错误。这不是一个实例变量,它是一个类变量。您希望MySelf.class_eval('@@name')
拥有class_variable_set
,然后它就可以使用。
在此处查看repl:https://repl.it/Be0U/0
要设置类变量,请使用 MySelf.class_variable_set('@@name', 'graham')
,如下所示:
def closestmatch(x, y):
val = np.abs(x-y)
return(val.min()>=3)
答案 1 :(得分:-1)
我认为你必须使用类实例变量。
class MySelf
@name = 'jonathan'
def self.name
@name
end
end
MySelf.instance_eval { @name } # => "jonathan"
MySelf.class_eval { @name } # => "jonathan"
试试吧,PLZ。