Bug #16609
Updated by sawa (Tsuyoshi Sawada) about 6 years ago
This I've tagged this as Bug, as it may be a bug, it may be an uncoded/partially a uncoded / partially working feature. Running Observe the following is possible ``` a = [1, 2, 3, 4, 5, 6] a.select(&:even?) #=> [2, 4, 6] a.select { |e| e.even? } #=> [2, 4, 6] a.sample #=> 3 (For example) a.select(&:even?).sample #=> 2 or 4 or 6 ``` However, running `#sample` with a block doesn't complain or throw an error; The error. So the following code runs, but runs (But doesn't execute correctly. correctly). ``` a = [1, 2, 3, 4, 5, 6] a.sample(&:even?) #=> 1 or 3 or 5 is **expected** a.sample { |e| e.even? } #=> 1 or 3 or 5 is **expected** ``` But if you run the second snippet, snippet you can get any number from 1 to 6. Here are is a few runs: runs ``` 2.7.0 :004 > a.sample # => 3 2.7.0 :005 > a.sample(&:even?) # => 1 2.7.0 :006 > a.sample(&:even?) # => 2 2.7.0 :007 > a.sample(&:even?) # => 6 2.7.0 :008 > a.sample(&:even?) # => 3 2.7.0 :009 > a.sample(&:even?) # => 2 ```