我想要一种方法来检测是否给宏一个块,其行为取决于此 .
对于方法,我可以定义两个方法来处理不同的情况,一个是明确的块参数而另一个不是 . 编译器将按预期调用正确的方法 .
但是对于宏,我发现编译器并不关心块参数的多态性 - 它总是在给出块时调用第一个宏 .
我不确定我是否理解正确,但也许简单的检查帮助你?
macro name(*args, &block) {% if block %} puts "with block" {% else %} puts "without block" {% end %} end name do "1" end #=> with block name("1") #=> without block
https://carc.in/#/r/53yy
1 回答
我不确定我是否理解正确,但也许简单的检查帮助你?
https://carc.in/#/r/53yy