- ベストアンサー
アクションスクリプト
学習中の参考書に、 Kakudo=_rotation+360*(_rotation<0); という記述があります。 _rotationが0より小さければ、360足すという意味のようですが, こういう文法があるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
< や > を使った式は、その式を評価した結果が式の答えになります。 これらの式の答えとは、式が成立するかしないか、数学の命題でいうところの真か偽かのどちらです。 ActionScript ではブール値といって、評価の結果が真の時は true 、偽の時は false という値が返ってきます。 true と false はスクリプトを分かりやすくするために内部で定義されている定数のことで、true は 1 、false は 0 として解釈されます。 答えが真か偽になる演算あっても、これを数値に置き換えられるのであれば、数値を扱う演算に組み込むことが可能と言えます。 ご質問文の例で考えますと。 例えば _rotation に 10 が入っている場合、_rotation は 0 より大きいので ( _rotation < 0 ) は成立しません。 つまり、この式の評価の結果は偽です。 評価の結果が偽ということは、( _rotation < 0 ) の答えは false です。 false は 0 として解釈されますから、 > Kakudo=_rotation+360*(_rotation<0); ↑この演算は Kakudo = _rotation + 360 * 0; と同じ意味になります。 ( _rotation < 0 ) が成立する場合も見てみましょう。 例えば _rotation が -10 の時、この式は成立するので評価の結果は真、つまり式の答えは true です。 true は 1 のことですから、 Kakudo = _rotation + 360 * 1; という意味になります。 -------------------------------------------------------------- 最終的に数値で答えを求める演算の中に、真か偽かという数値ではない答えになる演算が組み込まれている式は日常では見かけないもので、答えの出ない式のような気がします。 しかし、真と偽を 1 と 0 の数値に置き換えて考えることができるプログラミングの世界では、このような式も別に間違いではありません。 上手く使うとスッキリまとまった華麗なスクリプトになりますけれど、慣れないうちは無理をせず、if 文を使って if( _rotation < 0 ) { Kakudo = _rotation + 360; } else { Kakudo = _rotation; } と書いた方が分かりやすいかもしれません。 ちなみに、答えが真か偽になる式には、&& や || ・ ! などを使った演算もあります。 今回の件と同様、これらの式の答え( true または false )は数値の演算にも利用できます。 機会がありましたら研究してみてください。
お礼
DPE様 >>true は 1 、false は 0 として解釈されます。 目からうろこです。 勉強不足を痛感しました。 わかり易くて丁寧なご返答、大変ありがとうございました。