Ruby Language
Casting (typeconversie)
Zoeken…
Casting naar een String
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Gewoonlijk roept String()
alleen #to_s
.
Methoden Kernel#sprintf
en String#%
gedragen zich vergelijkbaar met C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Casten naar een geheel getal
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Een tekenreeks neemt de waarde van een geheel getal aan het begin, maar neemt geen gehele getallen van ergens anders over:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Er is echter een verschil wanneer de tekenreeks geen geldig geheel getal is:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Casting naar een Float
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Er is echter een verschil wanneer de string geen geldige Float
:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Drijvers en gehele getallen
1/2 #=> 0
Omdat we twee gehele getallen delen, is het resultaat een geheel getal. Om dit probleem op te lossen, moeten we er minstens één naar Float casten:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
Als alternatief kan fdiv
worden gebruikt om het resultaat van de drijvende komma van deling te retourneren zonder expliciet een operand te casten:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow