if文よりもパターンマッチング…?

関数型言語の流行のせいなのか知らんけど、if文よりもパターンマッチングが良いという話をたまに耳にする。それが今どきなコードなんでしょうか?

FizzBuzzで言うと、こういう書き方らしい。

(1 .. 100).each { |i|
  case [i % 3 == 0 , i % 5 == 0]
  when [true, true] 
    p "FizzBuzz"
  when [true, false]
    p "Fizz"
  when [false, true]
    p "Buzz"
  when [false, false] 
    p i
  end
}

普通にif文でFizzBuzz書くと、3と5両方で割りきれる条件を先頭する必要がありますが、このコードでは順番に依存しないというのが興味深い点です。

まー、if文でも順番に依存しないコードを書けるし、パターンマッチングは必ず順序非依存というわけではありませんけど…、悪くないですね。