Ho trovato questo operatore per caso:Qual è l'operatore di confronto! = ~ In ruby?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
che cosa è questo? Il suo comportamento non sembra "non corrisponde".
Ho trovato questo operatore per caso:Qual è l'operatore di confronto! = ~ In ruby?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
che cosa è questo? Il suo comportamento non sembra "non corrisponde".
Questo non è un operatore, sono due operatori scritti per sembrare un operatore.
Dal operator precedence table (decrescente):
[] []=
**
! ~ + -
[unario]
[diverse altre linee]
<=> == === != =~ !~
Inoltre, la classe Regexp ha un unary ~
operator:
~ rxp → intero o nullo
Match-Matchesrxp
contro il contenuto di$_
. Equivalente arxp =~ $_
.
Quindi la tua espressione è equivalente a:
"abc" != (/abc/ =~ $_)
E la Regexp#=~
dell'operatore (non è la stessa come il più familiare String#=~
) restituisce un numero:
rxp = ~ str → intero o nulla
Match-Matches rxp contro str.
Quindi si ottiene il risultato finale perché il confronto di una stringa con un numero è falso.
Ad esempio:
>> $_ = 'Where is pancakes house?'
=> "Where is pancakes house?"
>> 9 !=~ /pancakes/
=> false
>> ~ /pancakes/
=> 9
non sembra essere un vero e proprio operatore. molto probabilmente è '!' e '= ~' –