Project

General

Profile

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 
  
 ```

Back