2014-09-21 5 views
0
ltVal = node.left != null ? node.left.height : 0; 

Я думаю, что это написано на Java, может кто-нибудь объяснить, что это значит? Невозможно понять это сокращенное обозначениеЧто такое? in Java

+2

ли вы действительно пометить это «линией»? Я думаю, вы неправильно поняли тег. – Maroun

+0

Прочтите http://en.wikipedia.org/wiki/%3F: – NPE

+1

Если 'node.left' не' null', присвойте его высоте 'ltVal', иначе присвойте ему нулевое значение. Google «Тернарные операторы» – alfasin

ответ

2

Он называется тернарным оператором, и это только оператор, который принимает 3 операндов. В лучшем смысле это условный оператор, которые представляют меньший формат

Общий синтаксис:

boolean expression ? value1 : value2 

ваш пример:

ltVal = node.left != null ? node.left.height : 0; 

так же, как и

if(node.left != null) 
     itVal = node.left.height 
    else 
     itval = 0; 
+0

Спасибо за очистку вещей, я смущаюсь большую часть времени, если я не вижу никаких скобок xD. Не понимал, что троичный оператор назначается «ltVal», пока кто-то не объяснит xD – ZeferiniX

+0

@ ZeferiniX не волнуйтесь, вы получите используйте для этого. вы должны использовать этот вид кодирования, потому что lambda уже прибыла на Java. :) –

+0

Является ли хорошей практикой не ставить круглые скобки? Большинство примеров, которые я нахожу, использует тройные операторы, не имеют круглых скобок @ _ @ Не могли бы это понять, если бы это было ltVal = ((node.left! = Null)? Node.left.height: 0); – ZeferiniX