ruby中缺少括号,我如何知道它是否';是变量还是函数

ruby中缺少括号,我如何知道它是否';是变量还是函数,ruby,Ruby,例如,假设我们有一个名为ItemCollection的类,我们调用ItemCollection.quantity,因为括号不是必需的,我们如何知道它是访问ItemCollection中的quantity变量,还是调用quantity()函数?另外,对于Ruby类中的字段,它们是私有的还是公共的 这个评论回答了我的问题。但是,如果我有一个quantity变量和一个quantity()函数,该函数执行其他操作,而不是获取/设置quantity的值,该怎么办?Ruby如何确定我指的是哪一个 只有通过方

例如,假设我们有一个名为ItemCollection的类,我们调用ItemCollection.quantity,因为括号不是必需的,我们如何知道它是访问ItemCollection中的quantity变量,还是调用quantity()函数?另外,对于Ruby类中的字段,它们是私有的还是公共的

这个评论回答了我的问题。但是,如果我有一个quantity变量和一个quantity()函数,该函数执行其他操作,而不是获取/设置quantity的值,该怎么办?Ruby如何确定我指的是哪一个

只有通过方法才能直接访问类中的变量(内省除外)。

1。它是以小写字母(a,b…)开头的吗? a。Ruby检查它是否是局部变量。
BRuby检查它是否是方法。
CRuby调用方法_丢失

2.它是以大写字母(A,B…)开头的吗? a。Ruby检查它是否为常量。
BRuby称const_失踪

3.是方法调用(object.method)吗? a。Ruby检查它是否是方法
BRuby调用方法_丢失

所以外部对象(正如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=42
def get_a()
A.
结束
结束
A.new.get_A()#name错误:未定义的局部变量或方法'A'#

变量a属于a的某个版本,因此在声明类之后,类a和类a的实例本身并不知道a

您不应该知道。突然间,getter和fields是完全相同的接口。举个例子,你可以在没有getter的情况下获取数量变量?请参阅我更新的问题。定义的最后一个函数将覆盖前面的函数。提问时,请尽量不要假设。显示实际代码和数据,运行时遇到的错误,以及帮助我们处理实际问题所需的任何其他内容。是的。此外,实例变量前面有
@
,类前面有
@
,局部变量只能在其范围内访问,因此它们是不存在问题的。