🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Haxe 是一个静态类型语言。这就是说,当声明一个变量,编译器需要知道什么类型的数据会被分配给变量,所以它才能有效的处理它。 编程社区也有一些关于动态类型语言才是更好的解决方案的争论。 动态类型是指变量在任何时候可以包含任何类型数据,通常变量甚至不需要被声明,直到被查询之前它们才需要赋值。一旦一个变量保存一个值,数据可以在之后被推断为另外的类型,而不用使用转换(cast)。选择动态类型语言的开发者通常会说他们可以更快的制作原型和开发他们的应用,并常常发现类型限制的不足,相比于他们使用过的更低层语言。然而,这样的编程技术容易导致混乱的代码,大大增加造成错误代码和不稳定程序的可能,而且难以维护。同时,这样构建的应用往往运行缓慢,并且比静态类型语言消耗更多的内存,因为虚拟机要执行代码,需要在使用语言创建、转换和摧毁数据结构时有更多的工作要做。 无论如何,动态类型和静态类型语言的争论不会停止,因为每个人的感受不尽相同。但目前,最好还是承认,因为 Haxe 是静态类型的,它有最优的运行速度和文件大小,而且整洁的语法要求可以使你成为更好的程序员。 不用多说,静态类型需要对变量进行声明。Haxe 的变量需要在使用之前声明,然后一个恰当的结构和相应的内存分配被应用到你的数据。声明变量使用如下的语法: ~~~ var varName: Type; ~~~ 关键字 `var` 和 VB 的 `Dim` 关键字很类似,告诉编译工具后面那一行是一个变量声明。没有 `var` 关键字,编译工具期待一个表达式跟在变量后,比如分配数据到变量的语句,当然这会引起一个编译工具的错误,如果变量还未被声明。 `var` 关键字后是变量名。可以取任何你喜欢的名字,只要包含字母、数字或者下划线。同时,必须注意的是,尽管一个变量名可以包含数字,但是不能以数字作为开头。 变量声明的最后一部分是类型。类型名必须以一个大写字符开始。分配一个类型,会告诉编译工具你希望存储到这个变量中的数据的类型,所以才能在之后的代码中进行检查,从而减少运行时可能发生的错误。 你可以在声明的时候用数据初始化一个变量,然而这不是强制性的。要初始化一个变量,只要在声明之后使用一个赋值操作符(`=`),然后后跟是初始化变量需要的值,像这样: ~~~ var varName: Type = “dataToAssign”; ~~~ 使用到变量声明之后的数据可以是文本数据,如前面的例子。或者也可以使用现有的变量进行赋值。 试试如何声明一个变量。输入如下代码到一个新的文件,并保存它为 `VariableAssignment.hx` 文件: ~~~ class VariableAssignment { public static function main() { var flt:Float = 10.5; var str:String = "The quick brown fox."; trace(flt); trace(str); } } ~~~ 现在,编译代码,使用如下的 `.hxml` 内容: ~~~ -neko variableassignment.n -main VariableAssignment ~~~ 通过如下代码运行 neko 文件: ~~~ neko variableassignment.n ~~~ 你应该会看到类下面的结果: ~~~ VariableAssignment.hx:5: 10.5 VariableAssignment.hx:6: 飞快的棕色狐狸。 ~~~ 当代码被编译时,编译工具会对比传递到变量的值和这些变量被指定的值。 `trace` 函数提供一个方式转换大多数数据类型为字符串表示的格式,然后它可以被输出到控制台。 有可能出现的问题是,你可能并不知道将被存储到变量中值的类型信息。如果你已经创建了一个程序,通过外部提供的数据进行响应,那么你希望存储到变量的信息在运行之前并不能确定。 这个问题的答案是 Haxe 使用了类型推断。