gpt4 book ai didi

Ruby 在对象中查找类变量而不是特定类

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:49 25 4
gpt4 key购买 nike

这部分工作:

 class Example1
@@var1= "var1 in the Example1"
def get_var1
@@var1
end
end

example1 = Example1.new
example1.get_var1
# => "var1 in the Example1"

但如果我尝试特征类:

def example1.get_var1
@@var1
end

example1.get_var1
# NameError: uninitialized class variable @@var1 in Object
# from (pry):128:in `get_var1'

Ruby 在 Object 而不是 Example 中查找 @@var1

我已经在 Ruby 1.9.3 和 2.0 中测试了这段代码,结果相同。

为什么会这样?
第二件事,我们可以关闭它吗(这样 example.get_var1 就不会在 Object 中寻找类变量)?

最佳答案

类变量查找的词法作用域看起来有点古怪。据我所知,因为你不在里面

class Example1
end

请注意,ruby 不会在您的类中查找 @@var,而是从 Object 中查找。如果你想从你的类(class)明确地得到它,你可以这样做:

def example1.get_var
self.class.class_variable_get(:@@var1)
end

我偶然发现了 https://www.ruby-forum.com/topic/1228428在寻找答案的过程中。他们谈论的是 1.8.7,但它似乎也适用于更高版本。

关于Ruby 在对象中查找类变量而不是特定类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24510948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com