簡體   English   中英

將塊傳遞給'[]'ruby方法的語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM