forked from: Vector.sort()がダメすぎる件

by hiro_loveness1 forked from Vector.sort()がダメすぎる件 (diff: 2)
ベクターのソートメソッドは、実装かマニュアルがおかしい。
たぶん内部でNumberをintに通してしまうミスをやってる。
adobeの人も間違うんだったら、いっそのことintにNumberを暗黙的に入れたらエラーってことにしたらいいのに

@author sipo
♥0 | Line 37 | Modified 2011-05-20 00:32:55 | MIT License
play

ActionScript3 source code

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

// forked from tail_y's Vector.sort()がダメすぎる件
package {
    import flash.text.TextField;
    import flash.display.Sprite;

    /**
     * 
     * ベクターのソートメソッドは、実装かマニュアルがおかしい。
     * たぶん内部でNumberをintに通してしまうミスをやってる。
     * adobeの人も間違うんだったら、いっそのことintにNumberを暗黙的に入れたらエラーってことにしたらいいのに
     * 
     * @author sipo
     */
    public class VectorSortTest extends Sprite {
        
        private var _displayString:String;
        
        
        public function VectorSortTest() {
            _displayString = "※理想(リファレンスより)" + "\n" +
            "指定したメソッドはベクターのベース型(T)の 2 つの引数を受け取り、数値を返す必要があります。" + "\n" +
            "  function compare(x:T, y:T):Number {}" + "\n" +
            "compareFunction 関数のロジックにより、2 つのエレメント x と y が指定された場合、この関数は次の 3 つの値のいずれかを返します。" + "\n" +
            "" + "\n" +
            "x が y の前に表示されるソート順の場合は負の数。" + "\n" +
            "x と y が等しい場合は 0。" + "\n" +
            "x が y の後に表示されるソート順の場合は正の数。" + "\n" +
            "--------" + "\n" +
            "※現実" + "\n";
            
            var vector:Vector.<Number> = Vector.<Number>([10,15,1,3,4,5,100,50]);
            
            _displayString += "[" + vector.join(", ") + "]" + "\n" + 
            "↓" + "\n";
            
            vector.sort(function (x:Number, y:Number):Number{
                return x - y;    // x < y ? -1 : 1にしたらうまくいく 
            });
            
            _displayString += "vector.sort(function (x:Number, y:Number):Number{" + "\n" + 
            "    return x - y;" + "\n" + 
            "});" + "\n" + 
            "↓" + "\n" + 
            "[" + vector.join(", ") + "]" + "\n" + 
            "何この中途半端なソート" + "\n";
            
            
            var tf:TextField = new TextField();
            addChild(tf);
            tf.width = 465;
            tf.height = 465;
            tf.text = _displayString;
            tf.wordWrap = true;
        }
    }
}