Par exemple, dans cette ligne de code que j'ai écrite, print
et puts
produisent des résultats différents.
1.upto(1000).each { |i| print i if i % 2 == 0 }
Par exemple, dans cette ligne de code que j'ai écrite, print
et puts
produisent des résultats différents.
1.upto(1000).each { |i| print i if i % 2 == 0 }
La différence est importante si vous affichez des tableaux. Surtout ceux qui contiennent NIL. Par exemple :
print [nil, 1, 2]
donne
[nil, 1, 2]
mais
puts [nil, 1, 2]
donne
1
2
Notez qu'il n'y a pas d'élément nul qui apparaît (juste une ligne vide) et que chaque élément se trouve sur une ligne différente.
print
produit chaque argument, suivi de $,
à $stdout
suivi par $\
. Il est équivalent à args.join($,) + $\
puts
définit à la fois $,
et $\
à " \n "et fait ensuite la même chose que print
. La différence essentielle étant que chaque argument est une nouvelle ligne avec puts
.
Vous pouvez require 'english'
pour accéder à ces variables globales avec des noms conviviaux .
Les documents de l'API donner quelques bons conseils :
print() → nil
print(obj, ...) → nil
Écrit le(s) objet(s) donné(s) dans ios . Le flux doit être ouvert à l'écriture. Si le séparateur de champs de sortie (
$,
) n'est pas nul, il sera inséré entre chaque objet. Si le séparateur d'enregistrement de sortie ($\
) n'est pas nul, il sera ajouté à la sortie. Si aucun argument n'est donné, l'impression$_
. Les objets qui ne sont pas des chaînes de caractères seront convertis en appelant leurs objets de typeto_s
méthode. Sans argument, imprime le contenu de la variable$_
. Renvoie un résultat nul....
puts(obj, ...) → nil
Ecrit les objets donnés sur ios comme avec
IO#print
. Écrit un séparateur d'enregistrement (généralement une nouvelle ligne) après tous les éléments qui ne se terminent pas déjà par une séquence de nouvelles lignes. Si elle est appelée avec un argument de type tableau, elle écrit chaque élément sur une nouvelle ligne. Si elle est appelée sans argument, elle écrit un seul séparateur d'enregistrement.
En expérimentant un peu avec les points donnés ci-dessus, les différences semblent être :
Appelé avec plusieurs arguments, print
les sépare par le "séparateur de champ de sortie". $,
(par défaut, rien) tandis que puts
les sépare par des nouvelles lignes. puts
met également une nouvelle ligne après le dernier argument, tandis que print
ne le fait pas.
2.1.3 :001 > print 'hello', 'world'
helloworld => nil
2.1.3 :002 > puts 'hello', 'world'
hello
world
=> nil
2.1.3 :003 > $, = 'fanodd'
=> "fanodd"
2.1.3 :004 > print 'hello', 'world'
hellofanoddworld => nil
2.1.3 :005 > puts 'hello', 'world'
hello
world
=> nil
puts
dépile automatiquement les tableaux, tandis que print
ne le fait pas :
2.1.3 :001 > **print \[1, \[2, 3\]\], \[4\]**
\[1, \[2, 3\]\]\[4\] => nil
2.1.3 :002 > **puts \[1, \[2, 3\]\], \[4\]**
1
2
3
4
=> nil
print
sans arguments imprime $_
(la dernière chose lue par gets
), tandis que puts
imprime une nouvelle ligne :
2.1.3 :001 > gets
hello world
=> "hello world\n"
2.1.3 :002 > puts
=> nil
2.1.3 :003 > print
hello world
=> nil
print
écrit le séparateur d'enregistrements de sortie $\
après ce qu'il a imprimé, alors que puts
ignore cette variable :
mark@lunchbox:~$ irb
2.1.3 :001 > $\ = 'MOOOOOOO!'
=> "MOOOOOOO!"
2.1.3 :002 > puts "Oink! Baa! Cluck! "
Oink! Baa! Cluck!
=> nil
2.1.3 :003 > print "Oink! Baa! Cluck! "
Oink! Baa! Cluck! MOOOOOOO! => nil
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.