2017-04-22 3 views
2

Wenn Sie eine Reihe von Zahlen in einem Array haben, wie können Sie sie invertieren, so dass die positiven negativ sind und die negativen dann positiv sind.Wie man einen Wert auf Ruby invertiert

Ich habe das unten versucht, aber scheint nicht zu funktionieren.

def invert(list) 
    list.each {|x| x * (-1)} 
end 
+2

Ihr Code in der Tat das Gegenteil von dem jeweiligen Wert nicht berechnen, aber das Ergebnis wird weder angezeigt noch in einem anderen Array gespeichert. Sie können die resultierenden Werte mit 'list.each {| x | puts x * (-1)} ' –

+1

ändern' each' zu 'map' und hey presto. –

Antwort

11

So einfach

[1, 5, 7, -3, -47, 0].map { |i| -i } 
=> [-1, -5, -7, 3, 47, 0] 

noch kürzer.

[1, 5, 7, -3, -47, 0].map(&:[email protected]) 
=> [-1, -5, -7, 3, 47, 0] 

Es ist das einstellige minus Methode

1

map Verwendung wird eine neue Liste zurück, map! Verwendung wird die Liste selbst ändern

list = [1, 2, 3] 
new_list = list.map {|i| -i } 
# list still be [1, 2, 3] 
# new list = [-1, -2, -3] 
list.map! {|i| -i } 
# list changed to [-1, -2, -3] 
Verwandte Themen