例如,假设我们有一个名为ItemCollection的类,我们调用ItemCollection.quantity,因为不需要括号,我们如何知道它是否访问ItemCollection中的数量变量还是调用了quantity()函数?此外,对于Ruby类中的字段,它们是私有的还是公共的?
评论回答了我对吸气剂的质疑。但是如果我有一个数量变量,还有一个使用其他东西而不是获取/设置数量值的quantity()函数呢? Ruby如何确定我实际意味着哪一个?
答案 0 :(得分:0)
除了内省之外,没有办法直接访问类中的变量,只能通过方法。
答案 1 :(得分:0)
一个。 Ruby检查它是否是局部变量 湾Ruby检查它是否是方法 C。 Ruby调用method_missing
一个。 Ruby会检查它是否是常量 湾Ruby调用const_missing
一个。 Ruby检查它是否是方法
湾Ruby调用method_missing
所以外面的对象(正如steenslag所说)ruby做了3.
在你的对象/类定义中,它与1/2:
class E
def a()
'a'
end
def get_a()
a=42
puts a
end
end
E.new.get_a() #42
但在这种情况下:
class A
a=42
def get_a()
a
end
end
A.new.get_a() # NameError: undefined local variable or method `a' for #<A:0x3820368>
变量 a 属于 A 的某些版本,因此A类和A类的实例本身并不知道声明课程后。