-3
此代碼的輸出:這是什麼意思,`puts`的返回值是`nil`?
x = puts 'hello'
puts x
是:
hello
hello
但我預計輸出爲一個hello
。 puts x
未返回我預期的值。我認爲puts x
與puts 'hello'
相同。我錯過了什麼?
此代碼的輸出:這是什麼意思,`puts`的返回值是`nil`?
x = puts 'hello'
puts x
是:
hello
hello
但我預計輸出爲一個hello
。 puts x
未返回我預期的值。我認爲puts x
與puts 'hello'
相同。我錯過了什麼?
在您的示例中,您聲明x的值爲puts 'hello'
。在這種情況下x的值是零。在你的irb控制檯中試用它。
x
=> nil
如果你試圖呼籲放零,你會得到這樣的輸出
puts nil
=>
nil
至於爲什麼該方法返回零
的puts
方法相呼應,前面的參數到控制檯。在這種情況下,nil
實際上是返回值。
下面是從文檔
看跌期權(OBJ,...)一些信息→零
將給定對象的ios與IO#打印。在沒有以換行符結束的任何之後寫入記錄分隔符(通常是換行符)。如果使用數組參數調用,則將每個元素寫入新行。如果不帶參數調用,則輸出單個記錄分隔符。
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;
我無法重現您的輸出。當運行上面的代碼時,第一行('x = puts'hello'')將* hello打印到* stdout *,第二行('puts x')打印出一個空行。 – Stefan