本节书摘来自华章出版社《Hack与HHVM权威指南》一书中的第1章,第1.6.1节,作者 Owen Yamauchi,更多章节内容可以访问“华章计算机”公众号查看。
1.6.1 没有类型的变量
在大多数静态类型的语言之中,一个本地变量出现后就会被定义为某种类型。然后,这个变量将在整个生命周期内保存这种类型的值。本例中的代码可以是C++或者Java,不论哪种情况,这里都会引发一个类型错误。因为x被声明为一个int类型,所以永远不能把非int类型的值赋值给它:
int x = 10;
x = "a string"; // 错误
这并不是一个Hack中的例子,就像PHP一样,本地变量在Hack中可以不用声明类型,你可以简单地通过赋一个值给它来创建一个本地变量。你还可以对任何本地变量赋值新的值,而不用在意这个本地变量原本的类型是什么:
$x = 10;
$x = "a string"; // 正确
关键的不同点是:在Hack中,本地变量本身是没有类型的,它所存放的值是有类型的。
在本程序中的每个点上,类型检查器都知道在那个点每个变量所存放的值的类型。如果它发现一个新的值被赋给了这个变量,那么它将及时更新关于这个变量存放的值类型的知识点。
时间: 2024-10-24 02:45:46