なんでこれコンパイルエラーなの?

by 9balls
コメントアウトしてる26行目がコンパイルエラーになる。
たぶん最終的にString-1になってるせいだと思うんだけど、22行目はなんでOKなの?

数値部分を先に演算してくれるくれないの判定はどうやってるんだろう。

16行目と18行目の違いは何なのさ。加算か否かが重要?

リファレンスによるとString式が出て以降の加算はすべてまずStringに変換されるらしい

左から読んでいって文字列が来た時点で残りの要素は全部文字列になる。
これで12,14,16,20,24は説明できるかな。


18行目と22行目と26行目はどうなの?減算時は特別?
よくわかんなくなってきた
♥0 | Line 26 | Modified 2011-09-28 22:25:40 | MIT License
play

ActionScript3 source code

/**
 * Copyright 9balls ( http://wonderfl.net/user/9balls )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/c90k
 */

package {
    import flash.text.TextFieldAutoSize;
    import flash.text.TextField;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
            var tf:TextField = new TextField();
            tf.autoSize = TextFieldAutoSize.LEFT
            addChild(tf);
            //
            tf.appendText(String(2 + 1 + ""));// 3
            tf.appendText("\n");
            tf.appendText(String(2 - 1 + ""));// 1
            tf.appendText("\n");
            tf.appendText(String("" + 2 + 1));// 21
            tf.appendText("\n");
            tf.appendText(String("" + 2 - 1));// 1
            tf.appendText("\n");
            tf.appendText(String(1 + "" + 2 + 1));// 121
            tf.appendText("\n");
            tf.appendText(String(1 + "" + 2 - 1));// 11
            tf.appendText("\n");
            tf.appendText(String("" + 1 + "" + 2 + 1));// 121
            tf.appendText("\n");
            //tf.appendText(String("" + 1 + "" + 2 - 1));// エラー
            //tf.appendText("\n");
            //tf.appendText(String(1 + "" + "" + 2 - 1));// エラー
            //tf.appendText("\n");
        }
    }
}

Forked