rustでFizzBuzz - @ledsun blog で、rustのパターンマッチングを使ったFizzBuzzを書いたので、rubyでもパターンマッチ*1でFizzBuzzが書けそうな気がしてきました。
(1..30).each do case _1 in i if i % 15 == 0 p 'FizzBuzz' in i if i % 5 == 0 p 'Buzz' in i if i % 3 == 0 p 'Fizz' else p _1 end end
rustだと
fn main() { for i in 1..=15 { match i { i if i % 15 == 0 => println!("fizzbuzz"), i if i % 3 == 0 => println!("fizz"), i if i % 5 == 0 => println!("buzz"), _ => println!("{}", i), } } }
でした。大体一緒です。 パターンマッチ(ング)の世界では、パターンに式を書くことがガード(句)と言うようです。