关于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(); })();