2012-03-15 3 views
0

Я прочитал много кода, где у них есть утверждения, я заметил, что другие языки используют это. Asp является одним. Пробовал поиск по Google, но не смог найти ответа на него.Использование "?" и ":"

Что именно делает ?: подставка и когда его использовать.

Насколько я знаю ? равно if() и : равна }else{.

+0

Это ':' ваш ищете, или 'BOOL? true: false'. Потому что '?:' Приведет к чему-то вроде 'value1?: Value2', используя' value1', если он будет равен true. – steveoh

+0

Возможный дубликат [Что такое?: В PHP 5.3?] (Http://stackoverflow.com/questions/2153180/what-is-in-php-5-3) – mario

+0

И http: // stackoverflow.com/questions/3737139/reference-what-this-this-symbol-mean-in-php – mario

ответ

2

Это называется ternary operator.

Он предназначен для упрощения кода в некоторых случаях. Рассмотрим это:

var str; 

if(some_condition) 
    str = 'yes'; 
else 
    str = 'no'; 

Это можно легко переписать в виде

var str = some_condition ? 'yes' : 'no'; 
+0

+1 Хотя я бы сказал, что это более синтаксический сахар, логика такая же. – Peter

+0

@Peter: здесь - да. В общем - не то же самое. –

+0

То, что я подразумевал под «логикой одно и то же», заключается в том, что она ничего не упрощает. – Peter

6

Это ternary operator (хотя на большинстве языков он лучше назван «условным оператором»).

Люди часто ошибочно называют это «стенографией if/else». Но это неправильное название; if/else - заявление, ?: - выражение. В большинстве языков это разные понятия, с другой семантикой.

0

В Java, что это если/другое соотношение.

Примером трехкомпонентной операции:

boolean bool = (x==1) ? true : false; 

http://en.wikipedia.org/wiki/Ternary_operation

+1

Это довольно плохой пример, поскольку его можно заменить на '(x == 1)'. –

+0

Я бы не сказал, что это плохой пример, это лишний кусок кода. Он использовался как пример, а не как лучшая практика программного обеспечения. – Justin

+0

На самом деле, в настоящее время это синтаксическая ошибка (на большинстве языков программирования ...) –

0

Вы можете прочитать documentation. Раздел, который вы ищете, называется «Тернарный оператор».

1

По сути, синтаксис condition ? then-expession : else-expression. Обычно он используется при назначении переменных:

varname = something == 123 ? "yes" : "no"; 

Но его можно использовать практически везде вместо значения. Это в основном полезно для предотвращения повторных код:

if(something == 123) { 
    varname = "yes"; 
} 
else { 
    varname = "no"; 
} 
0

Вы можете выразить расчеты, которые могли бы потребовать Условный еще строительство более сжато с помощью условного оператора. Например, следующий код использует сначала оператор if, а затем условный оператор для проверки возможной ошибки деления на нуль перед вычислением функции sin.

if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0; 
    s = x != 0.0 ? Math.Sin(x)/x : 1.0; 

из http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.90).aspx