手冊簡介

hack除了是一門語言本身,Hack還為程序員提供了一整套工具。使用hh_client的類型檢查,并檢查你的代碼是最有可能成為您最常用的工具。

手冊說明

QQ圖片20170921103055

Hack是Facebook發(fā)布的一種編程語言。

Hack是HHVM的編程語言。Hack將動態(tài)類型語言的快速開發(fā)周期與靜態(tài)類型提供的學(xué)科相結(jié)合,同時增加了其他現(xiàn)代編程語言中常見的許多功能。

Hack通過在編輯文件時逐步檢查文件來提供即時類型檢查。它通常運(yùn)行在不到200毫秒的時間內(nèi),使其易于集成到開發(fā)工作流程中,而不會引起明顯的延遲。

主要語言功能

類型注釋

類型注釋允許在參數(shù),類成員變量和返回值上顯式鍵入代碼。

<?hh
class MyClass {
  const int MyConst = 0;
  private string $x = '';
  public function increment(int $x): int {
    $y = $x + 1;
    return $y;
  }
}

Generics

Generics允許類和方法參數(shù)化(例如,一個類被實(shí)例化或一個方法調(diào)用時關(guān)聯(lián)的類型)與靜態(tài)類型語言(如C#和Java)相同。

<?hh
class Box<T> {
  protected T $data;

  public function __construct(T $data) {
    $this->data = $data;
  }

  public function getData(): T {
    return $this->data;
  }
}

Nullable類型

Hack通過使用?操作符支持Nullable類型。這引入了一種更安全的處理空值的方法,對于通常不允許將null作為其值之一的原始類型(例如bool和int(使用?bool和?int分別))非常有用。操作員可以在任何類型或類別上使用。

Collections

Collections提供第一類,內(nèi)置參數(shù)化類型,如Vector(有序的,基于索引的列表),Map(有序字典),Set(唯一值列表)和Pair(基于索引的兩個集合元件)。

Lambda表達(dá)式

Lambda簡潔地允許定義first-class的功能。

<?hh
function foo(): (function(string): string) {
  $x = 'bar';
  return $y ==> $x . $y;
}
function test(): void {
  $fn = foo();
  echo $fn('baz'); // barbaz
}

其他特性

Hack的其他重要功能包括XHP,形狀,類型混搭,異步支持,向后兼容PHP代碼等等。

我們很高興有開源的Hack和轉(zhuǎn)換工具,您可以使用自己的代碼庫。我們致力于繼續(xù)致力于這個項(xiàng)目:我們很樂意為您的工作提供反饋意見,歡迎大家參與到HHVM和Hack社區(qū)。

本文翻譯自官網(wǎng):http://hacklang.org/


在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號