为什么这段代码有效?
<?hh // strict
function test(Vector<int> $v):void {
print_r($v);
}
test(Vector {1, array("I'm an array"), 3});
不应该抛出错误吗?什么是<int>
应该是什么?
答案 0 :(得分:7)
这不会在HHVM中引发错误,但会在Hack工具中引发错误。这是因为HHVM目前忽略了泛型,所以只是检查$v
是Vector
。
运行Hack工具(hh_client
)将首先抱怨顶级语句,如果通过将函数包含在函数内test
来纠正错误,则会正确地抱怨尝试传递Vector<mixed>
为Vector<int>
。