2
此代碼爲什麼工作?駭客語言:收集類型的泛型
<?hh // strict
function test(Vector<int> $v):void {
print_r($v);
}
test(Vector {1, array("I'm an array"), 3});
它不應該拋出一個錯誤?什麼是<int>
應該是爲了什麼?
此代碼爲什麼工作?駭客語言:收集類型的泛型
<?hh // strict
function test(Vector<int> $v):void {
print_r($v);
}
test(Vector {1, array("I'm an array"), 3});
它不應該拋出一個錯誤?什麼是<int>
應該是爲了什麼?
這不會在HHVM中引發錯誤,但會在Hack工具中引發錯誤。這是由於HHVM目前忽略了泛型,因此它只是檢查$v
是否爲Vector
。
運行黑客工具(hh_client
)將首先抱怨的頂層語句,如果你糾正通過包裝函數內部調用test
,將正確抱怨試圖通過一個Vector<mixed>
爲Vector<int>
。
有關如何獲取'hh_client'設置的相關文檔位於:http://docs.hhvm.com/manual/en/install.hack.bootstrapping.php 作爲附加顏色,請注意類型擦除語義泛型不是事物一定會永遠工作的方式;這是我們可能允許運行時知道將來某個時間的事情。 –