hack運(yùn)行

2018-09-29 15:36 更新

有些情況下,typechecker會報(bào)錯,但程序會在HHVM中運(yùn)行良好。

<?hh

namespace Hack\UserDocumentation\Types\Runtime\Examples\Runs;

// Even though we specify that the function is void, HHVM will still allow
// us to return an int with no problem.
function foo(int $x): void {
  return $x * 2;
}

var_dump(foo(2));

Output

int(4)

但是,在HHVM中有一些支持運(yùn)行時類型檢查,但是它的執(zhí)行目前是有限的。

  • HHVM忽略屬性注釋。
  • HHVM支持參數(shù)和返回類型注釋; 一般來說,如果您違反協(xié)議,將會引發(fā)可疑的致命錯誤。但是有例外:
  1. void在運(yùn)行時不執(zhí)行; 即,您可以void在運(yùn)行時從函數(shù)返回值
  2. Generics被強(qiáng)制執(zhí)行,就好像它們沒有類型參數(shù)一樣。
  3. 形狀元組只能像它們一樣被執(zhí)行array()。每個的內(nèi)部類型不被強(qiáng)制執(zhí)行。
  4. Enums僅在基礎(chǔ)類型級別執(zhí)行。HHVM不檢查有效的枚舉值。
  5. 如果在注釋之前指定了軟式提Enums示運(yùn)算符@,則在可能發(fā)生致命的情況下將會拋出警告。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號