关于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();
})();
关于Haxe3新特性“内联构造方法”的解释的更多相关文章
- 现代 PHP 新特性 —— 内置的 HTTP 服务器 (转)
转自 https://laravelacademy.org/post/4422.html 从 PHP 5.4.0 起,PHP内置了Web服务器,这对于认为需要Apache或Nginx才能预览PHP应用 ...
- [转]GLES 3.0 新特性
转自: http://www.ifanr.com/131333 OpenGL ES 3.0 带来很多新特性,根据 AnandTech 的解释: 支持更多缓冲区对象.在 OpenGL ES 2.0 时中 ...
- 函数新特性、内联函数、const详解
一.函数回顾与后置返回类型 函数定义中,形参如果在函数体内用不到的话,则可以不给形参变量名字,只给其类型. 函数声明时,可以只有形参类型,没有形参名 把函数返回类型放到函数名字之前,这种写法,叫前置返 ...
- Tomcat 7 的七大新特性(更容易将Tomcat内嵌到应用去中去 )
Tomcat的7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述TOMCAT 7中七个最显 ...
- iOS- 给App添加内购& 验证购买iOS7新特性
1.内购——应用内购买 我所说的内购——也可以说是应用内购买 大家都知道通过苹果应用程序商店有三种主要赚钱的方式: 1.直接收费(与国内大部分用户的消费习惯相悖,如果要收费,直接收高的,别收6块钱) ...
- 内联函数背景、例子、与普通函数的区别及要注意的地方 ------新标准c++程序设计
背景: 使用函数能够避免将相同代码重些多次的烦恼,还能减少可执行程序的体积,但也会带来程序运行时间上的开销.函数调用在执行时,首先在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下 ...
- Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
译者前言:相信凡是用过 zip() 内置函数的人,都会赞同它很有用,但是,它的最大问题是可能会产生出非预期的结果.PEP-618 提出给它增加一个参数,可以有效地解决大家的痛点. 这是 Python ...
- C#内联函数 特性 MethodImplOptions.AggressiveInlining)
[MethodImpl(MethodImplOptions.AggressiveInlining)] 内联函数 Impl:implement的缩写 内联函数 在计算机科学中,内联函数(有时称作在线函数 ...
- 特殊用途语言特性——默认参数、内联函数和constexptr函数
1 默认实参 某些函数有这样一些参数,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参.调用含有默认实参的函数时,可以包含该实参,也可以省略该实参. 我们可 ...
随机推荐
- ASP.NET 构建高性能网站 第6篇
内存问题概述 和CPU一样,内存也是一个直接影响服务端性能的重要的硬件资源. 一般来说,如果服务端内存不足,从导致以下两个问题产生: 1. 导致服务端把一些原本要写到内存中的数据,写到硬盘 ...
- 从零开始搭建linux下laravel 5.5所需环境(三)
好的,我们已经安装好了nginx+mysql+php了,打开[ Laravel 5.5 文档 ] 快速入门 —— 安装配置篇 我们看到这里需要安装Composer,好的,我们现在就来安装Compose ...
- HDU 1890 Robotic Sort (splay tree)
Robotic Sort Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- WindowsPhone&Windows8.1&Windows8&Unity3d 填坑日记
近期的游戏开发大体上接近尾声,总结了不少关于Unity3d面向Windows几大平台开发时遇到的各种坑以及怎样填坑的经验.总的来说,Windows8.1 Windows8/RT以及WindowsPho ...
- onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发
onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发 Notice:本文将紧接着 Android ...
- qt 4.8.5 vxworks 6.8 demo
2692407267@qq.com 环境vxworks 6.8.3 + GNU Patch.Qt-commercial-4.8.5 0 先安装vxworks 6.8.安装mingw 1 先编wind ...
- Testing your Xamarin app on Android device
I've develop a test application in Xamarin Studio (Android with C#) and wanted to test it on my phon ...
- iOS 5解决Could not instantiate class named NSLayoutConstraint问题
如果使用Xcode 4.5来新建项目,默认是支持AutoLayout的,但是AutoLayout是iOS 6的新特性,如果在iOS 5的simulator上运行程序,会出现Could not inst ...
- 访问自身子画面的方法 [self.view viewWithTag:100];
UIImageView *view1 = (UIImageView*)[self.view viewWithTag:100];
- Objective-C:三种文件导入的方式比较
三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...