2

为什么这段代码有效?

<?hh // strict
function test(Vector<int> $v):void {
    print_r($v);
}

test(Vector {1, array("I'm an array"), 3});

它不应该抛出错误吗?应该是为了什么<int>

4

1 回答 1

7

这不会在 HHVM 中引发错误,但会在 Hack 工具中引发错误。这是由于 HHVM 当前忽略了泛型,所以它只是检查是否$vVector.

运行 Hack 工具 ( hh_client) 将首先抱怨顶级语句,如果您通过将调用包装在test函数内部来纠正它,将正确地抱怨试图将 aVector<mixed>作为 a传递Vector<int>

于 2014-04-13T20:42:09.763 回答