Pourquoi ce code produit-il un nil après un Proc.call?
-
07-07-2019 - |
Question
C:\>irb
irb(main):001:0> s = Proc.new { puts "Hello" }
=> #<Proc:0x04051780@(irb):1>
irb(main):002:0> s.call
Hello
=> nil
Qu'est-ce qui cause le néant?
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
La solution
Comme l'indique @ sepp2k dans le commentaire, s
ne renvoie pas de valeur, met
renvoie nil
Ainsi, nil
devient automatiquement la valeur de retour, car il s'agit de la dernière instruction du processus.
Il est simplement imprimé sur le terminal en tant que valeur de retour de la dernière instruction, similaire à cette sortie cryptée après avoir affecté le proc à s
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow