我正在学习Ruby并且已经以这种方式看到(和使用)正则表达式匹配:
a = "string9"
if a =~ /\d/
#do something
end
代码可以工作但是今天我读了关于Regex的文档,并了解到=〜返回字符串中匹配的位置,如果不匹配则返回nil。我认为=〜返回true或false,当= =时返回true表示匹配,false表示不匹配。看来上面代码中的if语句应该被重写:
if /\d/ === a
我已经试过了两个,程序运行没有错误。我只是想了解发生了什么。似乎“如果”将采取除“零”之外的任何事情。我想我的问题不是关于正则表达式,而是关于if语句(和其他布尔语句)如何工作的更多信息。
答案 0 :(得分:2)
if
之后的谓词将被视为布尔值。
在Ruby中,只有false
和nil
被视为false
。其他任何内容都将评估为true
,因此0
,[]
,{}
在布尔上下文中都是true
。
来自Ruby doc:
nil和false都是假值。 nil有时用于表示“无值”或“未知”,但在条件表达式中求值为false。
true是真正的价值。除了nil和false之外的所有对象都在条件表达式中求值为真值。
您可以查看the control expressions。