[ruby-it] Perché Hash#partition non restituisce due Hash?

Guido De Rosa guidoderosa a gmail.com
Gio 3 Dic 2009 12:56:39 CET


Ciao:

    h = {'a' => 1, 'b' => 2, 'c' => 3}
    selected = h.select {|key, val| key < 'b' or val > 2}

e giustamente:

    selected #=> {"a"=>1, "c"=>3}

Ora, sempre nella classe Hash, il metodo partition *dovrebbe* avere un
comportamento simile, e restituire due Hash:

    selected, discarded = h.partition {|key, val| key < 'b' or val > 2}

invece:

    selected  #=> [["a", 1], ["c", 3]]
    discarded #=> [["b", 2]]

quando mi sembrerebbe più pulito e coerente ottenere:

    selected  #=> {"a" => 1, "c" => 3}
    discarded #=> {"b" => 2}

So che è facilissimo convertire gli Array di sopra negli Hash di sotto,
ma mi chiedo il motivo di tale inconsistenza in core ruby. Cosa mi
sfugge?

Grazie,
Guido

P.S. faccio riferimento a ruby1.9, non so come si comporta 1.8.
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list