einen Hash, zum Beispiel Gegeben:Gibt es einen One-Liner oder einen effizienteren Weg dies zu erreichen?
hash = { "fish" => 2, "cat" => 3, "dog" => 1 }
ich muß:
- Eine durch Kommata getrennte Zeichenfolge für alle Werte, zum Beispiel "2,3,1"
- Eine ganze Zahl, die die Gesamtsumme der Werte enthält, z. 6
Mein aktueller Code:
value_string = hash.map { |k,v| "#{v}"}.join(',')
sum = 0
hash.map { |k,v| sum += v}
Brauchen Sie wirklich eine Liner-Lösung für zwei Probleme? Beides kann ein Liner sein –
Sie können jeden beliebigen Ruby-Code in einen Einzeiler verwandeln, indem Sie die Zeilenumbrüche durch Semikolons ersetzen: 'value_string = hash.map {| k, v | "# {v}"}. join (','); Summe = 0; hash.map {| k, v | Summe + = v} 'Voila! Eine Zeile, genau wie du gefragt hast. –