在ruby中缺少括号,我怎么知道它是变量还是函数

时间:2013-02-27 22:40:49

标签: ruby

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

评论回答了我对吸气剂的质疑。但是如果我有一个数量变量,还有一个使用其他东西而不是获取/设置数量值的quantity()函数呢? Ruby如何确定我实际意味着哪一个?

2 个答案:

答案 0 :(得分:0)

除了内省之外,没有办法直接访问类中的变量,只能通过方法。

答案 1 :(得分:0)

1。它是以小写字母(a,b ..)开头的吗?

一个。 Ruby检查它是否是局部变量 湾Ruby检查它是否是方法 C。 Ruby调用method_missing

2。它是以大写字母(A,B ..)开头的吗?

一个。 Ruby会检查它是否是常量 湾Ruby调用const_missing

3。是方法调用(object.method)吗?

一个。 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类的实例本身并不知道声明课程后