1.upto(?d){|i|i%3<1&&x=:Fizz;puts i%5<1?"#{x}Buzz":x||i}
ポイントは以下の通り
- 「100」を「?d」と使用することで1文字短縮
- 三項演算子を利用
- &&の「左辺の処理が真なら右辺の処理を行う」を活用
- Rubyは式ごとに値を返すので&&の右辺が実行された場合は値が返るため真である
- :FizzとSymbolを使うことでStringの"Fizz"と比べ1文字短縮
- "#{x}Buzz"と文字内部に式を利用
- 初期化されていない変数はnilである
- nil値は値を返さないためx=nilのとき"#{x}Buzz" => "Buzz"
- Rubyの条件判定はnilの時もfalseとされる
- 「x||i」はxがnilでない場合xが評価される、xがnilの場合はiが評価される