Можно ли сделать проверку по умолчанию на ноль лучше?

Довольно часто мне нужно писать что-то похожее на:

_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 правы. Вы должны использовать логические операторы, а не побитовые.

Другие вопросы по тегам