とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

RubyでFizzBuzzしてみた

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が評価される