2012-04-09 12 views
4

Ich habe schon einige Möglichkeiten gesehen, Variablen auszugeben. Welche dieser Möglichkeiten ist "besser"?"Richtiger" Weg zur Ausgabe von Variablen in einer Zeichenkette

my_name = 'Jeff Hall' 
my_height = 74 
puts "Let's talk about %s." % my_name 
puts "He's %d inches tall." % my_height 

gegen

puts "Let's talk about #{my_name}." 
puts "He's #{my_height} inches tall." 

Auch, was zu tun repräsentieren die s und d nach dem %?

Antwort

3

Siehe die Dokumentation für die String#%-Methode, die Kernel#sprintf beschreibt, die beschreibt, was %s und %d bedeuten.

String-Interpolation eignet sich für einfache selbstdokumentierende Strings. Allerdings können Platzhalter verwenden, stellen Sie den Code kürzer und gibt Ihnen auch die Formatierung Leistung nicht so einfach mit String-Interpolation zur Verfügung:

values = { average:12.3, max:15.34734112, min:9.2314311 } 
values.each do |name,value| 
    puts "%7s: %5.2f" % [ name, value ] 
end 

#=> average: 12.30 
#=>  max: 15.35 
#=>  min: 9.23 

Die printf Codes sind geeky wie die Hölle, und sie haben eine very long history from other languages (weshalb sie sieht nicht sehr Ruby-esque), aber sie sind kraftvoll und knapp.

0

Ich bin erst kürzlich auf% namens Einbetten gestoßen. Es scheint, als ob es das ersetzt, was Sie nach dem% setzen.

E.G.

name = "harry" 
puts "My name is %s" %name 

Die einfache Antwort auf% s und% d% s für Strings ist, wo in% d für Dezimalstellen ist. Fortsetzung mit dem vorherigen Beispiel.

age = 35 
puts "My name is %s and I am %d years old" %[name, age] 
Verwandte Themen