[英]How does Ruby handle undeclared variables as opposed to php?
在php中,我可以轻松编写:
if (x > 100)
{
method();
}
知道如果x不存在,我的程序将把它视为道路上的小障碍,并继续前进。
我已经习惯了php的超松弛变量输入和未声明的处理,并且想知道Ruby的规则与此有关。
当您尝试评估未声明的内容时,Ruby的默认操作是什么?
而且如果我也可以使用此方法,那么Ruby中的null,零和false是否等于同一个东西? 将
if(!x)
{
puts 'works'
}
放?
我知道这些是非常简单的问题,但是它们对我来说太明显了以至于我无法抓住或者我使用了错误的搜索词组。
如果您使用的变量没有被除名,Ruby会抱怨。
在ruby中,通常不将if
放在{
和}
,而是放置if
并以end
。
false
nil
和0
是不同的东西。 您的代码将抱怨未定义x
并且仅在x
为false
或nil
时才puts
在ruby中检查值是否为nil
您使用nil?
像if !x.nil?
从最后一个问题开始:在ruby中,零不视为false,唯一的虚假值是: nil
,显然是false
。 其他一切都是“真实”的价值。
注意:我将使用实例变量,因为这不是很正常,局部变量发生了变化,没有实例化。
那么为什么这行不通
if @x > 100
method()
end
因为在ruby中的>
实际上是一个方法调用,所以如果@x
为nil(未定义的变量),它将抛出NoMethodError
因为nil没有定义该方法。
NoMethodError: undefined method `>' for nil:NilClass
因此,在您的情况下可以做的是首先确保@x
具有这样的值:
if @x && @x > 100
method()
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.