2012-04-21 157 views
-1

我定义我自己的方法来访问元素:如果我以前曾宣布@elementsArray.new访问元素?

class Array2 
    def [](key) 
    if key.kind_of?(Integer) 
     @elements[key] 
    else 
     # ... 
    end 
    end 
end 

,无论是业务:

list = Array2.new 
# ... 
puts list[0] 
puts list.[](0) 

正常工作。为什么第一次手术可以接受?

+0

我不明白这个问题。通过第一次操作,我假设你的意思是'放列表[0]'。为什么不能接受? – sepp2k 2012-04-21 02:30:14

+0

因为我将[]运算符定义为第二个操作。我不明白为什么没有“。”或者为什么参数位于括号的中间。 – 2012-04-21 02:52:42

回答

3

这两个list[0]list.[](0)语法意思是完全相同的东西。他们使用list对象上的参数0调用[]方法。

+0

但为什么没有“。”在列表[0]考虑我将它定义为一个方法,为什么参数允许在括号之间? – 2012-04-21 02:53:27

+0

@BhubhuHbuhdbus,这是[语法糖](http://en.wikipedia.org/wiki/Syntactic_sugar)。每次Ruby看到''object''都会调用'object。[](...)'。 – rid 2012-04-21 02:55:00

+0

哦,确定清除它。 – 2012-04-21 03:19:09