Ruby の all? メソッドはレシーバが [] の場合は true を返すので注意が必要

結論

標題の通りで、知っている人には当たり前なのですが、以下のような戻り値になります。

[].all? { |foo| foo == 1 } #=> true

どうするか

all? を使わないようにすればこのハマりやすい返り値から逃れられます。もし all? を使う場合には、レシーバが [] の場合は早期リターンをするなどすれば回避できます。

……が、そもそもこれを知らないと回避も何もないですよね……。

参考

tanaken0515.hatenablog.com

Powered by はてなブログ