Facebook Hack 語言 簡介

1. Hack 是什麼?php

Hack 是一種基於HHVM(HipHop VM 是Facebook推出的用來執行PHP代碼的虛擬機,它是一個PHP的JIT編譯器,同時具備產生快速代碼和即時編譯的優勢。)的新型編程語言,能夠實現與PHP的無縫互操做。Hack經過靜態編輯確保了PHP的快速開發週期,與此同時又添加其它主流語言的不少通用功能,使其相比於PHP更具優點。編程

 

Hack經過檢索本地服務器的文件系統表提供即時的類型校驗,校驗耗時一般小於200毫秒,所以它很容易集成到你的開發流程中而不引入明顯的延時。數組

 

下面是Hack語言一些很是重要的特性:安全

  • Type Annotations (類型註釋): 能夠是PHP代碼顯式類型參數,類成員變量和返回值:
    1 <?hh
    2 class MyClass {
    3   const int MyConst = 0;
    4   private string $x = '';
    5   public function increment(int $x): int {
    6     $y = $x + 1;
    7     return $y;
    8   }
    9 }
  • Generic(泛型):容許類和方法參數化(例如,當類實例化或方法調用時的一個類型關聯),同靜態類型語言如C和Java同樣:
     1 <?hh
     2 class Box<T> {
     3   protected T $data;
     4 
     5   public function __construct(T $data) {
     6     $this->data = $data;
     7   }
     8 
     9   public function getData(): T {
    10     return $this->data;
    11   }
    12 }
  • Nullable Types(可空類型): Hack 經過使用符號「?」實現對可空類型的支持,這就引入了一種更安全的方式來處理空值,尤爲對值不能取null的原始類型很是有用,例如bool 和int(用法:?bool 和 ?int),可空操做符能夠用於任何類型或類
  • Collections: 經過提供一流的,內置的參數化類型,如Vecctor(一個有序的,基於索引的列表),Map(一個有序的字典),Set(一個無重值列表), 和Pari(基於索引的只有兩個元素的集合)來加強使用PHP 數組的體驗。
  • Lambadas 提供和PHP closures相相似的功能,但它經過隱式的封閉的函數體捕獲變量而且更加簡潔
    <?hh
    function foo(): (function(string): string) {
      $x = 'bar';
      return $y ==> $x . $y;
    }
    function test(): void {
      $fn = foo();
      echo $fn('baz'); // barbaz
    }

    Other significant features of Hack include ShapesType AliasingAsync support, and much more.服務器

Hack其餘一些重要特性包括Shapes, Type Aliasing, Async support等。async

更多詳細信息請查閱:http://hacklang.org/編程語言

相關文章
相關標籤/搜索