В чем разница между ними?В чем разница между == ~ и! =?
Зачем использовать один над другим?
def variable = 5
if(variable ==~ 6 && variable != 6) {
return '==~ and != are not the same.'
} else {
return '==~ and != are the same.'
}
В чем разница между ними?В чем разница между == ~ и! =?
Зачем использовать один над другим?
def variable = 5
if(variable ==~ 6 && variable != 6) {
return '==~ and != are not the same.'
} else {
return '==~ and != are the same.'
}
В заводной, то ==~
оператор (он же оператор "матч") используется для регулярного выражения соответствия. !=
- просто обычный обычный «не равный». Так что это очень разные вещи.
Использует ли '== ~' в качестве оператора соответствия для 'variable == ~ 6'? –
Хороший вопрос на самом деле. Обычно для регулярного выражения требуется слэш, но короткий тест с 'def var = 3;' привел к: 'var == ~ 4;' будучи 'false' и' var == ~ 3; 'является' true', поэтому там может быть какая-то специальная обработка. Однако я не профессионал. – Marvin
@SotiriosDelimanolis Чтобы, наконец, пролить свет на этот вопрос: косые черты в groovy - это специальное требование для шаблонов, а вместо этого просто другой способ объявления строки. Таким образом, '/ foo /' на самом деле совпадает с '' foo''.И я считаю, что groovy просто обрабатывает '6' как' "6" '(поскольку переменная является нетипизированным' def'). – Marvin
В Java !=
является «не равно» и ~
является "побитовое НЕ". Вы действительно будете делать variable == ~6
.
В Groovy, ==~
Операция: "Регулярное совпадение". Примерами могут служить:
"1234" ==~ /\d+/
-> вычисляет true
"nonumbers" ==~ /\d+/
-> вычисляет false
В groovy есть оператор '== ~'. См. Http://groovy-lang.org/operators.html – Marvin
В Groovy вы также должны иметь в виду, что в дополнение к ==~
, псевдоним «Match оператор», есть также =~
, псевдоним «Найти Оператор» и ~
, псевдоним «оператор Pattern».
Все пояснено here.
типа ==~
результата: Boolean
/boolean
(неты примитивов в Groovy, все не так, как кажется!) Тип
=~
результата: java.util.regex.Matcher
~
Тип результата: java.util.regex.Pattern
I предположим, что интерпретатор Groovy/компилятор может различать ~
, используемый в качестве оператора Pattern, и ~
используется как поразрядным NOT (т.е. его использование в Java) через контекст: первый всегда будет следовать шаблону, который всегда будет заключен в скобки в разделителях, обычно /
.
Это не '== ~', это '==' и '~'. По крайней мере, на Java. Вы говорите о Java или Groovy? – immibis
Я говорю о Groovy, упс. – kschmit90
Рассматривая документацию, можете ли вы выделить то, что неясно об их различии? http://groovy-lang.org/operators.html –