如何在Haxe中创建公共常量?我只需要在AS3中使用好的老式AS3的模拟:
public class Hello
{
public static const HEY:String = "hey";
}发布于 2014-08-21 10:49:42
在Haxe中声明常量的通常方法是使用static和inline修饰符。
class Main {
public static inline var Constant = 1;
static function main() {
trace(Constant);
trace(Test.Constant);
}
}如果您有一组相关常量,那么使用enum abstract通常是有意义的。枚举摘要的值是隐式的static和inline。
请注意,只有基本类型(Int、Float、Bool)和String被允许为inline,对于其他类型,如果出现此错误,则会失败:
内联变量初始化必须是一个常量。
幸运的是,Haxe 4引入了一个final关键字,该关键字对于这种情况非常有用:
public static final Regex = ~/regex/;但是,final只阻止重新分配,它不会使类型不可变。因此,仍然可以从类似static final Values = [1, 2, 3];的内容中添加或删除值。
对于数组的具体情况,Haxe 4引入了haxe.ds.ReadOnlyArray,它允许“常量”列表(假设您不使用强制转换或反射操作):
public static final Values:haxe.ds.ReadOnlyArray<Int> = [1, 2, 3];Values = []; // Cannot access field or identifier Values for writing
Values.push(0); // haxe.ds.ReadOnlyArray<Int> has no field push尽管这是一个特定于数组的解决方案,但同样的方法也可以应用于其他类型。ReadOnlyArray<T>只是一个通过执行以下操作创建只读“视图”的抽象类型:
您可以看到它是如何实现这里的。
发布于 2014-11-13 10:38:26
对于非静态变量和对象,您可以给它们简单的一致性,如下所示:
public var MAX_COUNT(default, never):Int = 100;这意味着您可以以“默认”的方式读取值,但不能“永远”写入该值。
更多信息可以找到http://adireddy.github.io/haxe/keywords/never-inline-keywords。
https://stackoverflow.com/questions/25424247
复制相似问题