Why are all my puts returning =>nil?

2019-04-26 08:07发布

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

标签: ruby null puts
3条回答
等我变得足够好
2楼-- · 2019-04-26 08:31

You may want to use p instead of puts.

p prints and then returns the value.

查看更多
做自己的国王
3楼-- · 2019-04-26 08:39

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 "
查看更多
我欲成王,谁敢阻挡
4楼-- · 2019-04-26 08:49

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.

查看更多
登录 后发表回答