语言是
Haxe 语法接近 ECMAScript 并且
类测试{
静态函数 main() {
var 人 = [
“伊丽莎白”=>“编程”,
“乔尔”=>“设计”
];
for (people.keys() 中的名称) {
var job = people[姓名];
trace('$name 靠$工作谋生!');
}
}
}
主
- 用于指定函数类型“(name:String,age:Int)->Bool”或“(String, Int)->Bool”而不是“String->Int->Bool”的新语法。
- 箭头函数语法是“(a, b) -> a + b”而不是“function(a, b) return a + b”。
- 防止与使用 Null 值相关的问题(实验功能,可以选择为某些字段、类或包启用)。
- “final”关键字用于不可变的类字段和局部变量。 “final”还可以用于定义函数,以防止它们被继承覆盖以及用于无法继承的类/接口。
-
Поддержка 除 Neko 之外的所有编译目标上基本类型“String”的 Unicode 标准。 - 从头开始重写的内置解释器,现在以这个名称命名
EVAL 。 得益于新的解释器,脚本和宏的运行速度更快。 支持交互式调试模式。 - 新的编译目标系统(target)
哈希链接 - 专为 Haxe 设计的高性能运行时,支持编译为 JIT 或 C 的字节码,可轻松与 C 集成,并可访问低级数字类型和指针。 - 新的 JVM 目标 - 允许您在 Java 中定位时添加“-D jvm”标志,从而跳过 Java 代码编译步骤来生成 jvm 字节码。
- 能够在调用函数或构造函数时进行内联部署,即使它们没有这样声明。
- 纳入的可能性
静态扩展 使用“@:using(path.ToExtension)”声明类型(例如“enum”)时。 - 抽象类型现在支持“@:op(ab)”运算符的“set”版本来重新加载“obj.foo = bar”表达式。
- “for”循环语法现在支持键值迭代:“for (key => value in collection) {}”。
- 支持在表达式中使用类似 xml 的标记:“var a = <hi/>;”。 目前,该功能仅适用于宏解析,并且处于设计阶段。
- 匿名结构类型的“完整”表示法中可选字段的语法为:“{ var ?f:Int; }”(短“{ ?f:Int }”的替代方案)。
- 枚举值现在可以作为函数参数的默认值:“function foo<T>(option:Option<T> = None)”。
- “enum Abstract Name(BasicType) {}”语法不再需要“enum”中的“@:”前缀。
- 抽象枚举的自动编号:
枚举抽象 Foo(Int) {
变种A; // 0
变种B; // 1
}
枚举抽象 Bar(String) {
变种A; // “A”
变种B; //“B”
} - “extern”关键字不再需要使用“@:”前缀。
- 删除了选项“器物 Dynamic”通过字符串访问类字段。 可用于外部类或通过抽象类型实现。
- 为类型交集添加了“A & B”语法,目前仅适用于匿名结构和类型参数约束。 旧的约束语法已被删除。
- 可通过语法“var map:Map<Int, String>> = [];”创建空“Map”实例类似于数组。
- 添加了数据结构“haxe.ds.ReadOnlyArray”。
- 元数据现在可以具有命名空间(“@:prefix.name function() {…}”)。 与定义类似:“#if (some.flag ... #end”。
- 用于 IDE 的新服务协议
VSCode 插件 . - 更新了 Web API 的外部定义 (extern) 并添加了缺失的定义。
来源: opennet.ru