Actionscript 3 Haxe(闪存)和内联
我的问题是在一些情况下如何在Haxe(AS3)中内联Actionscript 3 Haxe(闪存)和内联,actionscript-3,flash,inline,haxe,Actionscript 3,Flash,Inline,Haxe,我的问题是在一些情况下如何在Haxe(AS3)中内联 任何标记有关键字inline(静态和非静态),的方法在编译过程中是否总是内联 默认情况下属性是内联的吗?如果没有,有没有办法将它们内联起来?(可能通过为它们指定内联访问器方法) 如果内联方法在编译时消失了,怎么可能从中派生出函子呢 你在haxe.org上看过吗 (文档中)对内联函数有一些限制。此外,不能内联递归函数。我相信所有标记为inline的方法都是内联的(当然,如果hxml文件中没有--no-inline操作),如果某个带有inline
inline
(静态和非静态),的方法在编译过程中是否总是内联inline
的方法都是内联的(当然,如果hxml文件中没有--no-inline操作),如果某个带有inline
标记的方法无法内联,编译过程中将抛出错误
不,他们没有。只能内联静态变量,否则会出现编译错误(内联变量必须是静态的
)。请注意,内联变量显然无法更改,因此没有理由内联非静态变量。如果内联geter
或seter
:
private var v: Bool;
public inline function getv(nv: Bool) {
return v;
}
它将被视为:
private var v: Bool;
public inline function getv(nv: Bool) {
return this.v;
}
内联后,将参照类更改此
。看一看。那里没有内联的StopWatched
类属性
我所指的内联访问器方法是这样的:
publicvarx(getX,getY):Int
,其中getX()
和getY()
是内联方法。函子也是函数对象。一种传递函数指针的方法,例如传递给事件侦听器。虽然我没有真正测试结果,但我记得它们在某种程度上是内联的。当它涉及到接口时,它们不是,但这是很明显的。@Dykam谢谢你的回答。我知道内联方法不能被重写,但这不是我问题的一部分。关于这类事情的文档的缺乏让我非常恼火。我的问题是-属性真的是隐藏的方法(如C#),还是仅仅是编译器对字段过量的限制。(谈论普通属性时,不使用访问器方法。)@实际上,属性定义只是一个别名。它被直接转换为方法调用。我认为通常的函数属性是不适用的。@Dykam由于您可以将访问器方法附加到属性,或者只是“按原样”使用属性,所以它似乎没有那么明显。问题是,在不附加方法的情况下使用属性是否会在后台生成方法(类似于C#中的自动属性),或者它的行为是否与字段一样,但具有自定义的可见性。