😽
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