I know this may seem like a really simple question, but it really bothers me that my puts keep generating "=> nil" and I scoured for an answer but could not find one. Thanks.
puts 'blink ' *4 blink blink blink blink => nil
I know this may seem like a really simple question, but it really bothers me that my puts keep generating "=> nil" and I scoured for an answer but could not find one. Thanks.
puts 'blink ' *4 blink blink blink blink => nil
Because that is the return value of puts
:
puts(obj, ...) → nil
Writes the given objects to ios as with IO#print. Writes a record separator (typically a newline) after any that do not already end with a newline sequence. If called with an array argument, writes each element on a new line. If called without arguments, outputs a single record separator.
source: http://www.ruby-doc.org/core-1.9.3/IO.html#method-i-puts
Also, I assume this is just in irb
? because calling puts
doesn't display its return value in normal applications.
irb
is fine to program in, I was just making a point that in any ruby program outside of irb
unless you specifically check the return value, it won't display it to you. –
Reedbuck You may want to use p
instead of put
s.
p
prints and then returns the value.
Hunter McMillen's answer is correct.
However, if you want a puts replacement that actually returns a non-nil value, I've created a gem called reputs.
reputs 'blink ' *4
blink blink blink blink
=> "blink blink blink blink "
© 2022 - 2024 — McMap. All rights reserved.