给定模块Bam
,并假设定义了方法Bam.[]
,可以使用非语法糖形式的块调用[]
方法,如:
Bam.[]('boom') do |a|
puts a
end
如何使用语法糖形式[]
中的块调用Bam['boom']
方法?
我尝试了以下内容:
Bam['boom'] do |a|
puts a
end
Bam['boom'] {|a|
puts a
}
他们引发语法错误。
我不是在寻找[]
的替代品。 Ruby提供了很好的语法糖,所以我更喜欢[]
而不是其他名字。
答案 0 :(得分:3)
[]
是一种快捷方式,可能无法接受阻止。
使用传统方法(在这种情况下只需1个字符):
module Bam
def self.get(a)
yield a
end
end
Bam.get('boom') do |a|
puts a
end
或显式方法语法Bam.[]('boom')
。
我认为你的只是一个例子,因为原始方法定义没有多大意义。
答案 1 :(得分:0)
我能想到的最接近的事情是Ruby的&
运算符convert a proc to a block:
block = proc { |a| puts a }
Bam['boom', &block]
或没有变量:
Bam['boom', &proc { |a| puts a }]