2016-04-18 10 views

答えて

2

あなたはこのように、「1」のための正確な値を格納するための文字列をチェックすることもできます

var myBool:Boolean = (myString === "1"); 

それとも、このように、二重の鋳造を行うことができます:

var myBool:Boolean = Boolean(int(myString)); 

後者空白( "1")または "01"(これが望ましい場合)の文字列の場合には真であるという利点がありますが、依然として "0"、 "0"または "00"は偽です。

このQAを追加しました。このブール値( "0")が真であるというこの問題に直面したためです。より良い解決策をお持ちの場合は、お気軽にコメントしてください。

+1

ECMAScript実装(JavaScriptなど)で発生します。 – axelduch

1

第1のケースではどのようになりますか?2番目のケースではfalseですか?

はそれぞれtruefalse'1''0'を変換するためのさまざまな方法がありますが、番号はこれらのケースを処理する方法のためにキャストされているか、より重要。例えば

、あなたは数字としてこれらの文字列を扱い、彼らは数字であるかのように彼らは、あなたがちょうどBooleanにキャストする前にNumberにキャストすることができ、ブール値にキャストする場合:これは、ことを意味

var t = '1'; 
var f = '0'; 

Boolean(Number(t)); //true 
!!+f; //false, terse syntax 

'-1'などの他の非ゼロの数値はtrueになり、NaNに変換される数字以外の数字、たとえば'word'falseになります。

あなたは値が正確に'1'であるかどうかを検出するために、そして他のすべてがfalseする必要があり、単純な等価比較に使用したいの代わり場合:あなたは値がでないかどうかを検出したいの代わり場合

t === '1'; //true 
f === '1'; //false 

をあなたの予想される入力と、それぞれ予想される出力が何であるかの事項最後に

t !== '0'; //true 
f !== '0'; //false 

:ゼロ、あなたは簡単な不等式比較を使用することができます。

+0

あなたの答えをありがとう。私は、Boolean(Number())を使用するのはBoolean(int())を使用する場合と同じであると思います。 「簡潔な構文」は、厳密なモードのAS3ではコンパイルされません。 – OMA

+0

@OMA内部的に、Flashはすべての数値型にNumberを使用し、int()、uint()などのためにいくつかの追加変換を行います。 – Brian

関連する問題