環境
WSL2 Debian12 bookworm Ruby 3.2.1
主題
値に真偽値を設定したHashオブジェクトがあるとする。
そのオブジェクトでも、all?
やnone?
を使って
{ bar: true, baz: true, foo: true }.all? #=> true { bar: false, baz: false, foo: false }.none? #=> true
とビシッと決めたい。
だが、all?
やnone?
をHashで使うには基本的にブロックが必要になる。
しかも、キーと値両方をブロック引数に渡さなければならない。
{ bar: true, baz: true, foo: true }.all? { |key, value| value } #=> true { bar: false, baz: false, foo: false }.none? { |key, value| value }#=> true
値の真偽値だけ知れればいいのに、key
もブロックに引き渡さなければならないのはちょっとダサい。
解決案
values
メソッドを使う。
{ bar: true, baz: true, foo: true }.values.all? #=> true { bar: false, baz: false, foo: false }.values.none? #=> true
ビシッと決めた。