簡體   English   中英

ruby中的!=〜比較運算符是什么?

[英]What is the !=~ comparison operator in ruby?

我偶然發現了這個算子:

ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
 => true

這是什么? 它的行為看起來不像“不匹配”。

這不是一個運算符,這是兩個運算符,它們看起來像一個運算符。

運算符優先級表 (從最高到最低):

[] []=
**
! ~ + - ! ~ + - [一元]
[多幾行]
<=> == === != =~ !~

此外,Regexp類有一個一元~運算符

~rxp→整數或零
匹配匹配$_的內容rxp 相當於rxp =~ $_

所以你的表達相當於:

"abc" != (/abc/ =~ $_)

Regexp#=~運算符(與更熟悉的String#=~ )返回一個數字:

rxp = ~str→整數或nil
匹配匹配rxp與str。

因此,您將最終結果視為真實,因為將字符串與數字進行比較是錯誤的。

例如:

>> $_ = 'Where is pancakes house?'
=> "Where is pancakes house?"
>> 9 !=~ /pancakes/
=> false
>> ~ /pancakes/
=> 9

!~=~ NOT !=~的倒數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM