Разбор логических значений в строках для использования с Function.apply - PullRequest
0 голосов
/ 13 марта 2010

Я использую String.split для разбора строки командной строки в массив строк. Затем результат используется для вызова функции с использованием Function.apply API.

Если apply(null, ["17"]) вызывается с этой функцией:

static function test(foo:int):void
{
    trace(foo, typeof(foo));
}

работает как положено (вывод: 17 number).

Однако, вызывая apply(null, ["false"]) или apply(null, ["0"]) с этой функцией:

static function test(foo:Boolean):void
{
    trace(foo, typeof(foo));
}

не работает (ожидаемый вывод: false Boolean; фактический вывод: true Boolean).

Есть ли способ заставить его распознавать "true" и "false" (или что-нибудь еще) как логические значения, так же, как это делает с числовыми строками? В идеале "true" и "false" также должны оставаться действительными строковыми значениями.

1 Ответ

2 голосов
/ 13 марта 2010

Нет, не существует встроенного способа интерпретировать строки "true" и "false" как логические значения.

В ActionScript и других языках сценариев ECMA единственное строковое значение, которое оценивается как логическое ложное, - это пустая строка "". Любая строка с длиной будет оценена как true в логическом выражении, включая строки "false" и "0".

На практике это редко является большой проблемой, так как сравнение строк довольно просто. Вот несколько предложений: Как мне преобразовать строку в логическое значение в JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...