-3

私は自分の目的のために機能している方法を持っていますが、唯一のことは、何が起こっているのか本当にわからず、素人の言葉で説明を使用できるということです. 具体的には、最後に評価された行:

hash.map{ |k,v| v==max[1] ? k : nil }.compact.sort_by(&:length).first

これは私のコードです:

 def self.largest_hash_key(hash)
    max = hash.max_by{ |k,v| v }
    seven = hash.max_by{ |k,v| k.length }.first
    if seven.length == 7
     seven
    else
     hash.map{ |k,v| v==max[1] ? k : nil }.compact.sort_by(&:length).first
    end
  end
4

2 に答える 2

1
 hash.map{ |k,v| v==max[1] ? k : nil }.compact.sort_by(&:length).first

意味:

For the hash passed in
For each key-value pair (that's the `.map`)
See if the value matches the maxiumum value that was found in the hash 
    by the `hash.max_by{ |k,v| v }` expression

If so, use the that key value, otherwise use nil (ignore it)
Take that result and `compact` it make it be the actual result (remove those nil elements).
Sort by length # Not sure if this is needed?
Return the key-value pair as an array rather than the hash passed in.
于 2013-05-13T17:33:36.550 に答える