hack運(yùn)行

2018-09-29 15:36 更新

有些情況下,typechecker會(huì)報(bào)錯(cuò),但程序會(huì)在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)行時(shí)類型檢查,但是它的執(zhí)行目前是有限的。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)