2013-06-01 2 views

ответ

0

Это эквивалентно:

if (t==null) 
    return -1; 
else 
    return t.height; 

условный оператор ? : Используется для возврата результата любого выражения в зависимости от значения 1-го выражения.

Работает, оценивая boolean expr, а затем решая, какое выражение оценивать.

7

Это тройной оператор. Общий синтаксис:

cond ? ifTrue : ifFalse 

, где cond это выражение возвращает логическое значение. Все выражение в целом оценивается как ifTrue, когда cond истинно, в противном случае оно оценивается как ifFalse. Конечно, и ifTrue, и ifFalse должны быть совместимых типов (обратите внимание, что null возможно для объектов).

Код выше, на практике, в точности эквивалентен следующему:

if (t == null) 
    return -1; 
return t.height; 

Это очень классический оператор во многих языках. На одном языке, который НЕ имеет этого оператора, есть Python.

+0

python имеет что-то подобное 'ifTrue if cond else ifFalse' – furas

+0

@furas да, но не этот оператор сам по себе – fge

0

если t равно null, он вернет -1, иначе он вернет t.hight. Это уборщик способ осуществить нулевой чек вместо того, чтобы

if(t==null) 
    return -1 
else 
    return t.hight 

, но это может выглядеть более загадочно тогда «если подход»

0
(a > b) ? a : b; 

это выражение, которое возвращает одно из двух значений, a

или b. Проверено условие (a> b). Если это правда, возвращается первое значение , a. Если оно ложно, второе значение, b, возвращается . Какое бы значение не возвращалось, зависит от условного теста , a> b. Условием может быть любое выражение, которое возвращает логическое значение .

1

это похоже на тест.

ваш пример аналогичен следующий код:

if (t == null) return -1; 
else return t.height; 
Смежные вопросы