2016-07-27 18 views
0

Es wird versucht, eine Methode für die String-Klasse zu erstellen, die eine vertauschte Zeichenfolge zurückgibt. Ich habe zwei verschiedene Methoden geschriebenHinzufügen der Swapcase-Klasse zur Zeichenfolge

class String 
    def to_alternating_case 
    self.swapcase 
    end 
end 

Der obige Code funktioniert für alle Zeichenfolgen eingegeben. Wenn jedoch der folgende Code eingegeben wird:

class String 
    def to_alternating_case 
    self.swapcase! 
    end 
end 

Dann gibt eine Zeichenfolge, die alle Zahlen enthält, NULL zurück. Kann jemand erklären, warum sich diese bei Strings, die nur Zahlen enthalten, anders verhalten?

+1

Wenn eine Methode keinen expliziten Empfänger hat, wird angenommen, dass der Empfänger "selbst" ist. Daher können Sie 'self.swapcase' durch' swapcase' ersetzen. –

Antwort

1

Die Unterschiede sind alle in der Bedienungsanleitung.

String#swapcase!:

Entspricht String#swapcase, sondern modifiziert den Empfänger an Ort und Stelle, Rückkehr str, oder nil, wenn keine Änderungen vorgenommen wurden. Hinweis: Die Groß-/Kleinschreibung ist nur in der ASCII-Region wirksam.