例如,假设我们有一个名为 ItemCollection 的类并且我们调用 ItemCollection.quantity,因为不需要括号,我们如何知道它是访问 ItemCollection 中的数量变量还是它调用了 quantity() 函数?此外,对于 Ruby 类中的字段,它们是私有的还是公共的?
该评论回答了我对吸气剂的问题。但是,如果我有一个数量变量和一个做其他事情而不是获取/设置数量值的数量()函数怎么办?Ruby 如何确定我真正指的是哪一个?
例如,假设我们有一个名为 ItemCollection 的类并且我们调用 ItemCollection.quantity,因为不需要括号,我们如何知道它是访问 ItemCollection 中的数量变量还是它调用了 quantity() 函数?此外,对于 Ruby 类中的字段,它们是私有的还是公共的?
该评论回答了我对吸气剂的问题。但是,如果我有一个数量变量和一个做其他事情而不是获取/设置数量值的数量()函数怎么办?Ruby 如何确定我真正指的是哪一个?
只有通过方法才能直接访问类中的变量(除了自省)。
一种。Ruby 检查它是否是局部变量。
湾。Ruby 检查它是否是方法。
C。Ruby 调用 method_missing
一种。Ruby 检查它是否是常量。
湾。Ruby 调用 const_missing
一种。Ruby 检查它是否是方法
b。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 的实例在声明类后本身不知道a。