views:

246

answers:

1

I'm using String.split to parse a command line string into an array of strings. The result is then used to call a function using the Function.apply API.

If apply(null, ["17"]) is called with this function:

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

it works as expected (output: 17 number).

However, calling apply(null, ["false"]) or apply(null, ["0"]) with this function:

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

does not work (expected output: false Boolean; actual output: true Boolean).

Is there a way to make it recognize "true" and "false" (or anything else) as Boolean values, just like it does with numerical strings? Ideally "true" and "false" should also remain valid string values.

A: 

No, there is no built in way to interpret the strings "true" and "false" as booleans.

In ActionScript, and other ECMA script languages, the only string value that gets evaluated as boolean false is an empty string, "". Any string with a length gets evaluated as true in a boolean expression, including the strings "false" and "0".

In practice, this is seldom a big problem, since it is quite easy to make a string comparison. A bunch of suggestions here: http://stackoverflow.com/questions/263965/how-can-i-convert-a-string-to-boolean-in-javascript

Lars