本文共 526 字,大约阅读时间需要 1 分钟。
在大多数静态类型的语言之中,一个本地变量出现后就会被定义为某种类型。然后,这个变量将在整个生命周期内保存这种类型的值。本例中的代码可以是C++或者Java,不论哪种情况,这里都会引发一个类型错误。因为x被声明为一个int类型,所以永远不能把非int类型的值赋值给它:
int x = 10;x = "a string"; // 错误这并不是一个Hack中的例子,就像PHP一样,本地变量在Hack中可以不用声明类型,你可以简单地通过赋一个值给它来创建一个本地变量。你还可以对任何本地变量赋值新的值,而不用在意这个本地变量原本的类型是什么:$x = 10;$x = "a string"; // 正确关键的不同点是:在Hack中,本地变量本身是没有类型的,它所存放的值是有类型的。在本程序中的每个点上,类型检查器都知道在那个点每个变量所存放的值的类型。如果它发现一个新的值被赋给了这个变量,那么它将及时更新关于这个变量存放的值类型的知识点。转载地址:http://myupa.baihongyu.com/