Unterschied zwischen Integer(Wert) und Preis.to_i
Gegeben ein string-Objekt wie folgt:
twohundred = "200"
Was ist der Unterschied zwischen:
Integer(twohundred) #=> 200
und:
twohundred.to_i #=> 200
Gibt es da einen Unterschied? Ist es empfehlenswert, verwenden Sie eine unter die andere?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Integer(num)
wirft einenArgumentError
Ausnahme, falls num kein Gültiger integer (können Sie die Basis).num.to_i
konvertieren, so viel wie es kann.Beispiel:
Kernel#Integer
undString#to_i
.nil.to_i #=> 0
währendInteger(nil) #=> throws TypeError: can't convert nil into Integer
Aus der Ruby - Dokumentation für
Integer()
:In anderen Worten,
Integer("0x100") => 256
und"0x100".to_i => 0
."0x10".to_i
gibt0
, währendInteger("0x10")
gibt16
"0x10".to_i(16)
allerdings gibt auch16
.Untersuchen wir Unterschiede zwischen der Verwendung der Instanz-Methode String#to_i und die Modul-Methode Kernel::Integer. Aber zuerst, lassen Sie uns einbetten, die später mit einer anderen Methode
int1
:So, wenn
str
nicht so ausgelegt werden, als integerInteger
wirft eineArgumentError
Ausnahme, wodurch die in-line-Rettung zurücknil
. WennInteger
keinen Anlass zu einer execptionint
zurück, die ganzzahlige äquivalent der Zeichenfolge.Zur Abrundung der Vergleiche, lasst uns auch hinzufügen, einen regulären Ausdruck, das bestätigt, dass der Inhalt der Zeichenfolge für eine ganze Zahl vor der Verwendung
to_i
um die Konvertierung zu machen.Als mit
int1
, wennstr
nicht so ausgelegt werden, als integerint2
zurücknil
; sonstint
gibt das ganzzahlige äquivalent der Zeichenfolge.Lassen Sie uns versuchen, einige Vergleiche.
String#to_i liest Ziffern (eventuell mit vorangestelltem minus-Zeichen), bis es liest whitespace-Zeichen erreicht oder das Ende des Strings. Es dann bloß wandelt die Ziffern und mögliche minus-Zeichen, um eine
Fixnum
, die es gibt.to_i
hat sicherlich seine Daseinsberechtigung, aber diese Beispiele zeigen, dass Sie verwenden solltenint1
oderint2
wenn Sie zurückgeben möchtennil
wenn der string nicht enthalten ist die Darstellung einer ganzen Zahl.