Я сталкивался этот кусок кода для вычисления высоты узла дерева AVL:return t == null? -1: t.height; что ? и: означает?
private int height (AvlNode<T> t) {
return t == null ? -1 : t.height;
}
Что сделайте ?
и :
значит?
Я сталкивался этот кусок кода для вычисления высоты узла дерева AVL:return t == null? -1: t.height; что ? и: означает?
private int height (AvlNode<T> t) {
return t == null ? -1 : t.height;
}
Что сделайте ?
и :
значит?
Это эквивалентно:
if (t==null)
return -1;
else
return t.height;
условный оператор ? : Используется для возврата результата любого выражения в зависимости от значения 1-го выражения.
Работает, оценивая boolean expr, а затем решая, какое выражение оценивать.
Это тройной оператор. Общий синтаксис:
cond ? ifTrue : ifFalse
, где cond
это выражение возвращает логическое значение. Все выражение в целом оценивается как ifTrue
, когда cond
истинно, в противном случае оно оценивается как ifFalse
. Конечно, и ifTrue
, и ifFalse
должны быть совместимых типов (обратите внимание, что null
возможно для объектов).
Код выше, на практике, в точности эквивалентен следующему:
if (t == null)
return -1;
return t.height;
Это очень классический оператор во многих языках. На одном языке, который НЕ имеет этого оператора, есть Python.
если t равно null, он вернет -1, иначе он вернет t.hight. Это уборщик способ осуществить нулевой чек вместо того, чтобы
if(t==null)
return -1
else
return t.hight
, но это может выглядеть более загадочно тогда «если подход»
(a > b) ? a : b;
это выражение, которое возвращает одно из двух значений, a
или b. Проверено условие (a> b). Если это правда, возвращается первое значение , a. Если оно ложно, второе значение, b, возвращается . Какое бы значение не возвращалось, зависит от условного теста , a> b. Условием может быть любое выражение, которое возвращает логическое значение .
это похоже на тест.
ваш пример аналогичен следующий код:
if (t == null) return -1;
else return t.height;
python имеет что-то подобное 'ifTrue if cond else ifFalse' – furas
@furas да, но не этот оператор сам по себе – fge