😽
Ruby の a and return と return and b
Rails のアプリケーションコードを読んでいると以下のように『 render
してすぐにメソッドから抜ける』という意図で and return
を使っている事がたまにあります。
def index
if true
render plain: "NG" and return
end
render plain: "OK"
end
これは『 render
を重複して呼ばないイディオム』として知られています。
return and a
をするとどうなる?
と、いう感じで a and return
はたまに見るコードなのですが return and a
はどうでしょうか。
そもそもこれを実行したらどうなるんでしょか。
やってみました。
return and a
__END__
output:
/path/to/test.rb: --> /path/to/test.rb
unexpected void value expression
> 1 return and a
/path/to/test.rb:1: void value expression (SyntaxError)
return and a
^~~~~~
と、言う事で return and a
はシンタックスエラーになりました。
演算子の左辺に void
を返す式があるとシンタックスエラーになる感じなんですかね?
なので and
以外でも同様の結果になります。
# 以下も同じ様に void value expression (SyntaxError) になる
return < 42
return && 42
Discussion