
16
|
第
1
章
与此相反的是,在
Hack
中传递过量的参数给一个函数将会触发一个错误,除非这个函
数显式地声明为一个可变参数函数。
Hack
中创建一个可变参数函数的语法是,放置一
个
...
到函数签名之中。在这样的函数之中,就像在
PHP
中一样,可以通过
func_get_
args()
、
func_get_arg()
以及
func_num_args()
获得这些参数值。
function
log_error(string $format, ...) {
$varargs = func_get_args();
// ...
}
可变参数允许是任意类型的,
log_error()
函数的第一个参数值必须是一个字符串,但
是随后的参数值可以是任何
Hack
的类型检查器可以接受的类型。
1.3.3
属性
在属性声明之中(不管是静态的还是非静态的),类型标注总是直接出现在属性名之前:
class C
{
public static
int $logging_level = 2;
private
string $name;
}
初始变量值是被支持的(就像范例中的
2
被赋值给
$logging_level
一样),并且初始
化的值必须和类型标注相一致。
属性的初始化事实上还有很多规则,为了避免你的代码会访问一个并没有被初始化
的属性,请查看
1.5.3
节的内容。
1.4 Hack
的类型系统
Hack
提供了一系列强有力的方法来描述类型,在
PHP
最基本的布尔型、整型、字符串型、
数组等类型系统的基础上,添加了很多新的方式来结合它们,并且使之更富有表现力。 ...