[英]Syntax to pass block to '[]' ruby method
給定模塊Bam
,並假設定義了方法Bam.[]
,則可以使用非語法糖形式的塊來調用[]
方法,例如:
Bam.[]('boom') do |a|
puts a
end
如何使用語法糖形式Bam['boom']
的塊調用[]
方法?
我嘗試了以下方法:
Bam['boom'] do |a|
puts a
end
Bam['boom'] {|a|
puts a
}
它們引發語法錯誤。
我不是在尋找[]
替代名稱。 Ruby提供了不錯的語法糖,所以我更喜歡[]
不是其他名稱。
[]
是一種快捷方式,它可能無法設計為接受塊。
都可以使用傳統方法(在這種情況下,此方法僅長1個字符):
module Bam
def self.get(a)
yield a
end
end
Bam.get('boom') do |a|
puts a
end
或顯式方法語法Bam.[]('boom')
。
我認為您只是一個例子,因為原始的方法定義沒有多大意義。
我能想到的最接近的是Ruby的&
運算符, 將proc轉換為塊 :
block = proc { |a| puts a }
Bam['boom', &block]
或沒有變量:
Bam['boom', &proc { |a| puts a }]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.