Ruby 为什么这个修饰符返回nil?
本次IRB会议:Ruby 为什么这个修饰符返回nil?,ruby,Ruby,本次IRB会议: words = [] #=> [] word||="" #=> "" words.push(word) until(word=gets.chomp)=="" #=> nil words #=> [] 我认为word被设置为”,然后被输入的用户输入覆盖,导致word再次被设置为” 什么是我的误解导致word成为nil 像ruby这样的语言是由表达式组成的。每个表达式都有一个返回值。till关键字是一种流控制工具,允许执行表达式“直到”满足特定条件。看起
words = []
#=> []
word||=""
#=> ""
words.push(word) until(word=gets.chomp)==""
#=> nil
words
#=> []
我认为word
被设置为”
,然后被输入的用户输入覆盖,导致word
再次被设置为”
什么是我的误解导致
word
成为nil
像ruby这样的语言是由表达式组成的。每个表达式都有一个返回值。till
关键字是一种流控制工具,允许执行表达式“直到”满足特定条件。看起来像是语句形式的表达式,直到条件
返回nil
,而不管语句
的返回值是什么
在这种特殊情况下,您得到的
nil
与分配给ẁord
像ruby这样的语言是由表达式组成的。每个表达式都有一个返回值。till
关键字是一种流控制工具,允许执行表达式“直到”满足特定条件。看起来像是语句形式的表达式,直到条件
返回nil
,而不管语句
的返回值是什么
在这种特殊情况下,您得到的
nil
与分配给ẁord
word
不是nil
;然后在提示下尝试输入word
。word | |=“”#=>第三个会话中的true
。甚至你在第二个会话中的结果也与之相反。想想看:word
必须是”
,否则直到循环不会停止。word
不是nil
;然后在提示下尝试输入word
。word | |=“”#=>第三个会话中的true
。甚至你在第二个会话中的结果也与之相反。想想看:word
必须是”
,否则直到的循环就不会停止。这就像put
总是返回nil
一样,即使它做了一些事情。这就是它的工作原理。是的,或多或少。区别在于,put
是一种可以被覆盖以返回其他内容的方法,而until
是语言中内置的关键字。哦,绝对是这样。我的意思是,返回值并不意味着它什么都没做。有些函数做了大量的工作并返回nil
以避免混乱。从“像while
循环,直到循环的结果是nil
,除非使用break
。”这就像put
总是返回nil
,即使它做了一些事情。这就是它的工作原理。是的,或多或少。区别在于,put
是一种可以被覆盖以返回其他内容的方法,而until
是语言中内置的关键字。哦,绝对是这样。我的意思是,返回值并不意味着它什么都没做。有些函数做了大量的工作,并返回nil
以避免混乱。从“像while
循环一样,直到循环的结果是nil
,除非使用break
。”