Можно ли сделать проверку по умолчанию на ноль лучше?
Довольно часто мне нужно писать что-то похожее на:
_parsedBetData["prizeLevel"] = params["prizeLevel"] == null ? "default" : params["prizeLevel"];
Мне интересно, есть ли лучший способ сделать это? Моя главная проблема заключается в том, что я должен написать params["prizeLevel"] дважды.
Конечно, это можно извлечь из функции, аналогичной:
_parsedBetData["prizeLevel"] = defaultIfNull(params["prizeLevel"], "foo");
function defaultIfNull(o:*, default:*):* {
return o == null ? default : o;
}
Но тогда я должен был бы иметь доступ к этой функции везде, где я хочу сделать эту проверку. Поэтому мне интересно, есть ли какой-нибудь умный способ решения этой проблемы. Может быть, с помощью какой-нибудь немного магии? Или здесь прототипирование / динамическое что-то применимо?
Лучшее решение, которое я придумал, это сделать макрос внутри IDE кода, который заставляет какую-то конкретную комбинацию клавиш писать это. Но держу пари, у кого-то есть идея получше.
2 ответа
Это, возможно, синтаксис, который вы ищете:
_parsedBetData["prizeLevel"] = params["prizeLevel"] || "default";
Чтобы установить для _parsedBetData["prizeLevel"] значение по умолчанию, если оно равно null, вы можете сделать
_parsedBetData["prizeLevel"] ||= "default";
Это может сделать не совсем то, что вы хотите, поскольку пустая строка также имеет значение false.
Может быть, логическое назначение ИЛИ - это то, что вы ищете:)
Вы могли бы сделать
params["приз Level"] ||= "по умолчанию";
Если вы хотите, чтобы он был в какой-то другой переменной, используйте простой оператор ИЛИ
_parsedBetData["приз Level"] = параметры ["приз-уровень"] || "дефолт";
--РЕДАКТИРОВАТЬ--
Оба 32bitkid и Cleong правы. Вы должны использовать логические операторы, а не побитовые.