什么意思是'puts`的返回值是'nil`?

时间:2016-02-11 02:39:10

标签: ruby

此代码的输出:

x = puts 'hello'
puts x

是:

hello
hello

但我希望输出为helloputs x没有返回我预期的值。我认为puts xputs 'hello'相同。我错过了什么?

1 个答案:

答案 0 :(得分:0)

在您的示例中,您声明x的值为puts 'hello'。在这种情况下,x的值为零。在您的irb控制台中尝试一下。

x
=> nil

如果您尝试在看跌期权时调用nil,您将获得此输出

puts nil
=>            
   nil

至于为什么该方法返回nil

puts方法回显前一个控制台参数。在这种情况下,nil实际上是返回值。

以下是文档中的一些信息

  

puts(obj,...)→nil

     

将给定对象写入ios,与IO#print一样。在没有以换行符结束的任何内容之后写入记录分隔符(通常是换行符)。如果使用数组参数调用,则将每个元素写入新行。如果不带参数调用,则输出单个记录分隔符。

http://ruby-doc.org/core-2.2.2/IO.html#method-i-puts

以下是该方法的源代码

if (argc == 0) {
    rb_io_write(out, rb_default_rs);
    return Qnil;
}

看看最后一行。 return Qnil;

相关问题