Por que esse código de produzir um nulo após uma Proc.call?
-
07-07-2019 - |
Pergunta
C:\>irb
irb(main):001:0> s = Proc.new { puts "Hello" }
=> #<Proc:0x04051780@(irb):1>
irb(main):002:0> s.call
Hello
=> nil
O que faz com que o nulo?
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
Solução
Como @ sepp2k pontos fora no comentário, s
não retorna um valor, puts
retornos nil
, então nil
torna-se automaticamente o valor de retorno, uma vez que é a última declaração no proc.
Ele só fica impressa no terminal como o valor de retorno da última declaração, semelhante à saída enigmática depois de atribuir o proc para s
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow