0
快速的問題,我已經碰到這個select(&:even)
語法跑了幾次,我理解它,除了一件事大部分:簡單的Ruby PROC用(:)
的&
符號,對我來說,是什麼使得方法名稱,以及方法名稱。我不明白爲什麼需要符號語法來定義偶數。在很短的例子:
arr = [1,2,3,4,5]
puts arr.select(&:even?)
正確選擇並打印所有偶數但是,
arr = [1,2,3,4,5]
puts arr.select(&even?)
生產:
Untitled 3.rb:2:in <main>: undefined method even? for main:Object (NoMethodError)
誰能幫助我理解使用的必要性:
符號?
方法名稱是符號,所以引用方法':even?'。運算符'&'做兩件事:它調用方法名稱上的[Symbol#to_proc](http://ruby-doc.org/core-2.2.0/Symbol.html#method-i-to_proc)將其轉換到一個proc([Proc](http://ruby-doc.org/core-2.2.0/Proc.html)的實例),然後調用proc。如果你有'arr.select(&proc)',它只會調用proc。 –
我無法解析你的句子'(&符號,對我來說)是什麼使得方法名稱,以及方法名稱。 – sawa
爲什麼你會認爲它會在沒有':'的情況下工作? – sawa