Мне действительно нравится переписанный API Поточной обработки от Java 1.6. Callables являются большими. Они - в основном потоки с возвращаемым значением.
Это условный оператор , он эквивалентен примерно так:
if (pattern.Gotoccurance.score != null) {
pattern.Gotoccurance.score;
} else {
'0';
}
Но я думаю, что оператор присваивания отсутствует в опубликованном вами коде, например :
var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';
Переменная score
будет присвоена, если pattern.Gotoccurance.score
не равно нулю:
var score;
if (pattern.Gotoccurance.score != null) {
score = pattern.Gotoccurance.score;
} else {
score = '0';
}
Обычный шаблон для выполнения такого рода присвоений «значения по умолчанию» в JavaScript заключается в использовании логического оператора ИЛИ ( ||
):
var score = pattern.Gotoccurance.score || '0';
Значение pattern.Gotoccurance.score
будет присвоено переменной score
, только если это значение не является ложным (ложными значениями являются ложное
, пустое
, неопределенное
, 0
, нулевое значение) строка или NaN
).
В противном случае, если это 's falsy '0'
будет присвоено.
Обновление: Производительность будет эквивалентной, вы должны сосредоточиться на удобочитаемости, я пытаюсь использовать тернарный оператор для очень простых выражений, и вы также можете улучшить форматирование, разделив его на две строки, чтобы сделать его более читаемым:
var status = (age >= 18) ? "adult"
: "minor";
Связанный вопрос:
Это называется тернарный оператор.
s называется тернарным оператором. s называется тернарным оператором. Вы можете попробовать /Developer/Applications/Utilities/FileMerge.app
. Это всегда хорошее начало. Также вам следует попробовать genstrings
.
Отвечая на обновленный вопрос «Зачем нужно такое кодирование?»
Иногда вы можете использовать тернарный оператор для уменьшения сложности:
Например, у меня есть веб-страница, на которой необходимо проверить, что по крайней мере в два из трех конкретных текстовых полей были введены значения. Логика if / else выглядела довольно некрасиво, но тернарный оператор сделал ее однострочным, чтобы определить, сколько полей было заполнено:
var numberFilledInFields = ( (firstName.length > 0 ? 1 : 0) +
(lastName.length > 0 ? 1 : 0) +
(zipCode.length > 0 ? 1 : 0) );
if (numberFilledInFields < 2)
{
validation = false;
return;
}
Это решение выглядит довольно элегантным и легким для чтения, чем некоторые альтернативы.
Это тернарный оператор , сокращенный способ выполнения операторов if.
Если бы его переписали, он выглядел бы так:
if (pattern.Gotoccurance.score != null) {
return pattern.Gotoccurance.score;
} else {
return '0';
}