me encontré con este operador por casualidad:¿Cuál es el operador de comparación! = ~ En ruby?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
¿qué es esto? Su comportamiento no se parece a "no coincide".
me encontré con este operador por casualidad:¿Cuál es el operador de comparación! = ~ En ruby?
ruby-1.9.2-p290 :028 > "abc" !=~ /abc/
=> true
¿qué es esto? Su comportamiento no se parece a "no coincide".
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-Partidosrxp
contra los contenidos de$_
. Equivalente arxp =~ $_
.
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
no parece ser un operador real. lo más probable es '!' y '= ~' –