Es gibt print
, put
und p
als Funktionen zum Ausgeben einer Zeichenkette an die Konsole in Ruby, aber ich habe versucht, die Unterschiede auf meine eigene Weise zusammenzufassen.
Bestätigte Version: Ruby 2.6.6p146 (2020-03-31 Revision 67876) [x64-mingw32]
print
print
druckt die Zeichenfolge so wie sie ist. Wenn ein Objekt übergeben wird, wird die von der Methode ".to_s" des Objekts zurückgegebene Zeichenfolge gedruckt.
print "abc"
print "def"
# => abcdef
Wenn Sie für das Zeilenvorschubzeichen "\ n" und das Tabulatorzeichen "\ t" in einfache Anführungszeichen "" setzen, werden sie maskiert und als Zeichen angezeigt. Wenn Sie sie in doppelte Anführungszeichen "" setzen, werden sie als Zeilenumbrüche bzw. Tabulatoren interpretiert. zeigen.
print 'a\nb\tc'
# => a\nb\tc #Einfache Anführungszeichen interpretieren keine Zeilenumbrüche und Tabulatoren
print "d\ne\tf"
# => d #Doppelte Anführungszeichen interpretieren Zeilenumbrüche und Tabulatoren
# => e f
Wenn ein Array oder ein Hash angegeben wird, wird es im definierten Format angezeigt.
a = [ 1, 2, 3, "4", "5", "abc" ]
b = [ a: "a1", b: "b1", c: "c1" ]
c = [ [1,2], [3,4],5 ]
print a,b,c
# => [1, 2, 3, "4", "5", "abc"][{:a=>"a1", :b=>"b1", :c=>"c1"}][[1, 2], [3, 4], 5]
puts
put
wird genauso angezeigt wie print
. Der große Unterschied besteht darin, dass am Ende ein Zeilenumbruch hinzugefügt wird. Gleiches gilt für die Behandlung von einfachen und doppelten Anführungszeichen.
print "abc"
print "def"
# => abc
# => def
puts 'a\nb\tc'
# => a\nb\tc #Einfache Anführungszeichen interpretieren keine Zeilenumbrüche und Tabulatoren
puts "d\ne\tf"
# => d #Doppelte Anführungszeichen interpretieren Zeilenumbrüche und Tabulatoren
# => e f
Wenn Sie ein Array oder einen Hash angeben, unterscheidet sich die Ausgabe stark von "print". Das Array wird für jedes Element erweitert und mit Zeilenumbrüchen ausgegeben, und die Zeichenfolge wird nicht in Anführungszeichen gesetzt. Im Fall von Hash wird es ohne eckige Klammern "[]" angezeigt. In einem verschachtelten Array werden die Elemente separat angezeigt, und die verschachtelten Informationen können nicht erfasst werden.
a = [ 1, 2, 3, "4", "5", "abc" ]
b = [ a: "a1", b: "b1", c: "c1" ]
c = [ [1,2], [3,4],5 ]
puts a,b,c
# => 1 #Alle Elemente werden erweitert und angezeigt
# => 2
# => 3
# => 4 #Zeichenfolgenzitate werden nicht angezeigt.
# => 5
# => abc
# => {:a=>"a1", :b=>"b1", :c=>"c1"} #Es gibt keine eckigen Klammern.
# => 1 #Alle verschachtelten Sequenzen werden auf derselben Ebene erweitert
# => 2
# => 3
# => 4
# => 5
p
p
druckt die Zeichenfolge, die von der .inspect
-Methode anstelle von .to_s
zurückgegeben wird, wenn das Objekt übergeben wird. Zusätzlich wird am Ende jeder Zeile ein Zeilenumbruch hinzugefügt. Der Unterschied besteht darin, dass die Zeichenfolge in doppelte Anführungszeichen gesetzt und ausgegeben wird.
p "abc"
p "def"
# => "abc"
# => "def"
Das Zeilenvorschubzeichen "\ n" und das Tabulatorzeichen "\ t" werden nicht als Zeilenumbrüche und Tabulatoren interpretiert. Wenn Sie es jedoch in einfache Anführungszeichen setzen, wird die maskierte Version von "" angezeigt, und wenn Sie es in doppelte Anführungszeichen setzen, werden die Zeichen so angezeigt, wie sie sind, ohne zu maskieren.
p 'a\nb\tc'
# => "a\\nb\\tc" # \Fliehen\\Wird sein.
p "d\ne\tf"
# => "d\ne\tf" #Doppelte Anführungszeichen interpretieren Zeilenumbrüche und Tabulatoren
Wenn ein Array oder ein Hash angegeben wird, wird es im definierten Format angezeigt.
a = [ 1, 2, 3, "4", "5", "abc" ]
b = [ a: "a1", b: "b1", c: "c1" ]
c = [ [1,2], [3,4],5 ]
p a,b,c
# => [1, 2, 3, "4", "5", "abc"]
# => [{:a=>"a1", :b=>"b1", :c=>"c1"}]
# => [[1, 2], [3, 4], 5]
--puts
, p
fügt automatisch eine nachgestellte Unterbrechung hinzu, print jedoch nicht.
--p
wird mit der in doppelte Anführungszeichen eingeschlossenen Zeichenfolge ausgegeben.
--print
, put
interpretiert und zeigt Sonderzeichen wie Zeilenumbrüche \ n
und tab \ t
an, aber p
interpretiert keine Sonderzeichen und gibt sie so wie sie sind als Zeichenfolgen aus. ..
--print
, p
druckt ein Array oder einen Hash wie definiert, aber put
erweitert das Array und druckt es mit einem Zeilenumbruch für jedes Element.
Zuerst dachte ich, dass "Puts" eine Version mit einem Zeilenumbruch in "Print" ist, aber es gab einen großen Unterschied in der Array-Anzeige. Wenn Sie das gesamte Array ausgeben und überprüfen möchten, ist es besser, keine Puts zu verwenden.
In Büchern und im Internet gibt es viele Beschreibungen, dass " p
zum Debuggen ist ", aber es ist sicherlich einfacher zu erkennen, ob Sie beim Debuggen keine Sonderzeichen interpretieren, es ist einfach, zwischen Zeichenfolgen und numerischen Werten zu unterscheiden, und es ist einfach einzugeben. Es ist also sicherlich besser, beim Debuggen die Funktion "p" zu überprüfen.
Recommended Posts