Crystal をやってみた その5(ifをマクロに)

if をマクロにしたらスッキリした。チェーンでは書けなくなるけど。 マクロの引数は先行評価されないからね。 (三項演算子使えば良いじゃんと思ったのは内緒だ) # $ crystal test6.cr macro mif(b, t, e) return {{t}} if {{b}} {{e}} end struct Int # 階乗 def fact mif self.<=(0), 1, self.pred.fact.*(self) end # …