代入処理と同時にifを評価
rubyの場合、nilとfalse以外はtrueとなる。
よって、こういう書き方ができる。
if name puts name end
この書き方はjavascriptでもできますね。
で、ここまでは知ってたんだけど、こんな書き方も出来るってのは知らなかった。
ary = ["hello"] if name = ary[0] puts name end puts name if name = ary[1] puts name end
このifでは、「name = ary[0]」の結果、つまり代入後のname変数の値が評価対象となるみたい。ary[0]は「hello」なので、ifはtrueとなり「hello」が出力される。
念のためにやってみたけど、その後の「puts name」でも「hello」が表示されたのでスコープはifの中だけということではないようだ。ちなみに次のif文のところ、Javaな人としてはArrayIndexOutOfBoundsExceptionが出るのではと不安がよぎるのですが、rubyでは範囲外にアクセスした時の結果はnilとなります。よって何も出力されません。