Условие отрицания оператора if

#scala

#scala

Вопрос:

Если я хочу сделать что-то вроде:

 if (!(condition)) { }
 

Какое эквивалентное выражение в Scala?
Похоже ли это?

 if (not(condition)) { }
 

Например, в C я могу сделать:

 bool condition = (x > 0)
if(!condition){ printf("x is not larger than zero") }
 

РЕДАКТИРОВАТЬ: я понял, что Scala определенно может сделать то же самое, что я просил. Пожалуйста, продолжайте и попробуйте.

Комментарии:

1. Я прошу прощения за то, что не был ясен. Я спрашиваю if(!condition){} . Условие может быть любым. Спасибо!

2. @JeffHu Что такое «что угодно»? Можете ли вы привести пример?

3.@YuvalItzchakov Например, в C я могу сделать: bool condition = (x > 0) if(!condition){ printf("x is not larger than zero") }

4. Вы можете сделать то же самое в Scala.

Ответ №1:

В Scala вы можете проверить if , равны ли два операнда ( == ) или нет ( != ), и он возвращает true, если условие выполнено, false, если нет ( else ) .

 if(x!=0) {
    // if x is not equal to 0
} else {
    // if x is equal to 0
}
 

Само по себе ! называется логическим оператором NOT .

Используйте его, чтобы изменить логическое состояние его операнда.

Если условие истинно, то логический оператор NOT сделает его ложным.

 if(!(condition)) {
    // condition not met
} else {
    // condition met
}
 

Где !(condition) может быть

  • любое (логическое) выражение
    • например: x==0
      • -> !(x==0)
  • любое (подобное логическому) значение
    • например: someStr.isEmpty
      • -> !someStr.isEmpty
        • нет необходимости в избыточных круглых скобках

Комментарии:

1. Спасибо! Как насчет того, что я только хочу выполнить (!условие) ?

2. @JeffHu Это тоже работает, когда вашим условием является, например, вызов логической функции.

Ответ №2:

if (! condition) { doSomething() }

condition в приведенном выше if выражении может быть любое выражение, которое вычисляет Boolean

например

 val condition = 5 % 2 == 0

if (! condition) { println("5 is odd") }
 

!= эквивалентно negation of ==

 if (x != 0) <expression> else <another expression>
 

Scala REPL

 scala> if (true) 1
res2: AnyVal = 1

scala> if (true) 1
res3: AnyVal = 1

scala> if (true) 1 else 2
res4: Int = 1