zoukankan      html  css  js  c++  java
  • 关于Haxe3新特性“内联构造方法”的解释

    学习过C/C++的童鞋们应该了解inline即内联机制的意义,Haxe语言也很好的支持内联机制,让开发者可以自己在空间效率和时间效率上进行取舍。

    从Haxe3开始,构造方法也可以使用inline关键字声明为内联的,那么在实际环境中,Haxe编译器是如何处理构造方法内联的呢?Google圈子里有位大牛用一个实际的例子帮助大家进行理解,原帖地址在:https://groups.google.com/forum/#!topic/haxelang/HDHQBcMNdp8


    大牛的例程如下:

    注意:内联构造方法会把类成员转换成局部变量。

    import haxe.io.*;
    class Test {
        static function main() {
            for(i in new BetterIntIter(10, 20, 2))
                trace(i);
        }
    }
    class BetterIntIter {
        var curr:Int;
        var max:Int;
        var jump:Int;
        public inline function new(from:Int, to:Int, jump:Int = 1) {
            this.curr = from;
            this.max = to;
            this.jump = jump;
        }
        public inline function hasNext():Bool
            return curr < max;
        public inline function next():Int
            return curr += jump;
    }
    上面Haxe源码会被转化为如下JS代码,注意类变量的处理:
    (function () { "use strict";
    var Test = function() { }
    Test.main = function() {
        var _g_curr = 10, _g_max = 20, _g_jump = 2;
        while(_g_curr < _g_max) {
            var i = _g_curr += _g_jump;
            console.log(i);
        }
    }
    Test.main();
    })();
    

  • 相关阅读:
    前端面试题
    js collection
    javascript变量声明提升(hoisting)
    css3动画
    神奇的meta
    wap站bug小结
    前端collection
    js拾遗
    prototype之初印象
    自定义scrollBottom的值
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3281469.html
Copyright © 2011-2022 走看看