>> Hello everybody,
>>
>> Could you please take a look at the result of the following  
>> statements:
>>
>> irb(main):001:0> a = {'foo' => 'bar', 'baz' => 'qux'}
>> => {"baz"=>"qux", "foo"=>"bar"}
>>
>> irb(main):002:0> a.reject{|k,v| k=='foo' }
>> => {"baz"=>"qux"}
>>
>> irb(main):003:0> a.select{|k,v| k=='baz' }
>> => [["baz", "qux"]]
>>
>> The result of the reject statement is clearly sensible: the original
>> hash minus the element with the key 'foo'.
>> But what about select? Shouldn't it return the same hash (instead of
>> an array of key-value pairs)?
>
> I have to concur. I've never liked that. You'd think there'd be some
> way to have Enumerable act in accordance with the class it is
> effecting, rather then dropping to the "LCD" --an array.

Absolutely.
But the most baffling to me is, that it does not even act  
_consistently_, see my original examples.
 From a logical point of view (or at least the principle of least  
surprise), selecting some elements should be identical
to dropping the others.

Is there anybody who can explain, why it had to be implemented that way?
Is there any chance of that getting changed in the future?

Sincerely yours,
Alexander Presber