2012-04-21 112 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