3
A
回答
7
星號*
表示將所有剩餘參數組合到由參數命名的單個列表中。和號&
表示如果給方法調用一個塊(即block_given?
將爲真),則將其存儲在由參數命名的新Proc中(或者假 -argument,我猜)。
def foo(*a)
puts a.inspect
end
foo(:ok) # => [:ok]
foo(1, 2, 3) # => [1, 2, 3]
def bar(&b)
puts b.inspect
end
bar() # => nil
bar() {|x| x+1} # => #<Proc:0x0000000100352748>
注意,&
必須出現最後,如果使用的話,和*
可能是下一個到最後一個之前,或者它必須是最後一個。
的*
操作者也可用於「擴展」數組到參數列表在呼叫時間(而不是在一個定義爲「組合」起來),像這樣:
def gah(a, b, c)
puts "OK: a=#{a}, b=#{b}, c=#{c}"
end
gah(*[1, 2, 3]) # => "OK: a=1, b=2, c=3"
gah(1, *[2, 3]) # => "OK: a=1, b=2, c=3" # must be last arg.
類似地,&
操作者可用於在調用函數時將Proc對象作爲給定塊「擴展」:
def zap
yield [1, 2, 3] if block_given?
end
zap() # => nil
zap(&Proc.new{|x|puts x.inspect}) # => [1, 2, 3]
相關問題
- 1. 當用作方法參數的前綴時,「this」是什麼意思?
- 2. 什麼意思前綴::意思是
- 3. 這是什麼意思,「一個聲明陰影參數」?
- 4. 方法聲明中參數名稱之前'@'char是什麼意思?
- 5. 這個CSS聲明是什麼意思?
- 6. 這個C#聲明是什麼意思?
- 7. 在聲明方法時,C++中的= 0是什麼意思?
- 8. 這個聲明是什麼//! [數字]是什麼意思?
- 9. NSLog中的前綴是什麼意思?
- 10. 類聲明之前的方括號是什麼意思?
- 11. 這種方法是什麼意思?
- 12. 當在TASM中聲明段時,「para public use16」是什麼意思?
- 13. ::什麼都沒有加前綴時是什麼意思?
- 14. 函數調用前面的類型聲明是什麼意思
- 15. 以下聲明是什麼意思?
- 16. C聲明是什麼意思?
- 17. 以下聲明是什麼意思?
- 18. 當聲明一個字符串變量時,括號是什麼意思?
- 19. 當在PHP中聲明一個變量時`<<是什麼意思?
- 20. 當你聲明/調用一個屬性時,括號是什麼意思?
- 21. 「o」是什麼意思作爲一個可變的前綴?
- 22. Java錯誤 - 不是一個聲明,這是什麼意思?
- 23. 什麼參數構造函數的意思,當明確要求在聲明
- 24. 這是什麼CSS聲明的意思是 - 兩個聲明一次
- 25. 聲明數組的下列方式是什麼意思?
- 26. 對於各種排序算法,「stable」和「unstable」是什麼意思?
- 27. 當附加到一些jQuery插件時,mb前綴是什麼意思?
- 28. 什麼「&」用C意味着++,當涉及一個方法聲明
- 29. 「〜方法」是什麼意思?
- 30. 在聲明全局模板函數時,「static」是什麼意思?
非常感謝,這就很好地解釋了它。 – Chris
類似地,'array.each(&proc)'將對象'proc'作爲塊參數傳遞給方法'#each'。如果你有一個命令參數和一個塊的數組,你可以調用'sh(* cmd,&block)'來傳遞'cmd'中的每個元素作爲參數,'block'作爲塊。 – Peeja
@Peeja:對,忘記了,我會更新我的答案。 – maerics