gpt4 book ai didi

ruby - 动态添加的实例方法无法访问类变量

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

<分区>

(问题已发布在 Ruby Forum ,但没有引起任何答案)。

这是我的代码:

class MC
def initialize
@x = 5
@@y = 6
end

def f
puts @x
puts @@y
end
end

m = MC.new
m.f

m.f 产生预期的输出而没有错误:

5
6

但是这个:

def m.g
puts @x
puts @@y
end

m.g

产生:

5
warning: class variable access from toplevel
NameError: uninitialized class variable @@y in Object

为什么我可以从f访问@@y,但不能从g访问?

在警告和错误消息中提到 toplevelObject 令我感到困惑。

@x 打印为5,所以它的环境是MC。这排除了 m.g 定义中的 @x@@y 引用顶层环境(Object) 而不是 MC

为什么我会收到错误消息?

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