Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么这段代码有效?
<?hh // strict function test(Vector<int> $v):void { print_r($v); } test(Vector {1, array("I'm an array"), 3});
它不应该抛出错误吗?应该是为了什么<int>?
<int>
这不会在 HHVM 中引发错误,但会在 Hack 工具中引发错误。这是由于 HHVM 当前忽略了泛型,所以它只是检查是否$v是Vector.
$v
Vector
运行 Hack 工具 ( hh_client) 将首先抱怨顶级语句,如果您通过将调用包装在test函数内部来纠正它,将正确地抱怨试图将 aVector<mixed>作为 a传递Vector<int>。
hh_client
test
Vector<mixed>
Vector<int>