2011-10-07 10 views

Respuesta

19

No es un operador, son dos operadores escritos para parecerse a un operador.

Desde el operator precedence table (decreciente):

[] []=
**
! ~ + -[unario]
[varias] más líneas
<=> == === != =~ !~

Además, la clase Regexp tiene una unary ~ operator:

~ rxp → número entero o nulo
Match-Partidos rxp contra los contenidos de $_. Equivalente a rxp =~ $_.

Así que su expresión es equivalente a:

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

Y el Regexp#=~ operador (no es el mismo que el más familiar String#=~) devuelve un número:

rxp = ~ str → entero o nulo
Coincidencia de coincidencias rxp contra str.

Así que se cumple como su resultado final porque la comparación de una cadena con un número es falsa.

Por ejemplo:

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

!~ es la inversa de =~ NO !=~

+0

Gracias por compartir esto. – LandonSchropp

Cuestiones relacionadas