原文連結:http://www.hacklang.org.cn/
Hack程式設計語言中文官網 <?hh
echo "Hello, HackLang.org.cn!";
?>
整潔! 安全! 可重構! 相容php!
Hack是由FaceBook公司推出的一種程式設計語言,用於HHVM中。 簡寫為hh,可以使用hhlang.org.cn來訪問本站。
新手教程 HHVM安裝 1
<?hh
2
class MyClass { 3
public function alpha(): int { 4
return 1;
5
}
6
7
public function beta(): string { 8
return 'hi test';
9
}
10
}
11
12
function f(MyClass $my_inst): string { 13
// Fix me!
14
return $my_inst->alpha();
15
}
什麼是Hack程式設計語言
Hack是一種程式設計語言,用於HHVM中,可與PHP結合,相互無縫操作使用。Hack 實現PHP式的快速開發週期,提供靜態類型,同時增加了許多在其他現代程式設計語言中常見的特性。
Hack通過本機伺服器監控檔案系統來提供瞬時的類型檢查。它通常運行在不到200毫秒,因此很容易整合到您的開發工作流程,而不會引入明顯的延遲。
Hack的目標為開發人員提供了一個方式來寫乾淨,安全和可重構代碼,同時要保持與當前的PHP程式碼程式庫一定程度的相容性。實現這一目標的主要途徑是向開發人員提供一種方式來檢查PHP函數和類的類型資訊,因而提供了類型檢查工具。此外,還提供了特定的語言功能: 類型標註 這個特性將允許php代碼來標註參數,類成員變數和傳回值的類型。(原本的PHP是對參數的類型不敏感的。比如字串型和整形。)
<?hhclass MyClass { const int MyConst = 0; private string $x = ''; public function increment(int $x): int { $y = $x + 1; return $y; }} 泛型,PHP(在同樣的靜態類型語言如C語言、Java、C#)。泛型允許類和方法是參數化(即,當一個類被執行個體化或方法調用,進行類型相關聯)。這裡有一個例子:
<?hhclass Box<T> { protected T $data; public function __construct(T $data) { $this->data = $data; } public function getData(): T { return $this->data; }} Nullable Types Hack增加了一種更安全的方式通過被稱為“可為空白”型(有時也被稱為“可能”或“選項”)的觀念來處理空值。可為空白值允許空值已指派並檢查其上的任何類型。可為空白值是原始類型通常不允許null作為它們的值,如BOOL和INT,但它也可以是使用者自訂的類。下面是一個例子。注意。操作符用來表示可為空白。 Hack增加了容器類型和介面到PHP。建立在Hack對泛型的支援,Hack 增加了內建的參數化集合,如vectors和maps。集合是專門用於資料存放區和檢索。集合實現許多相同的介面,並擴充到創造更多的專門集合。目前,Hack 可以實現以下具體的集合類型: 拉姆達運算式 offer similar functionality to PHP closures, but they capture variables from the enclosing function body implicitly and are less verbose:
<?hhfunction foo(): (function(string): string) { $x = 'bar'; return $y ==> $x . $y;}function test(): void { $fn = foo(); echo $fn('baz'); // barbaz}
Hack語言的更多特性還包括 Shapes, Type Aliasing, Async support, and 更多.
您可以用在您自己的程式碼程式庫上,有很多開源的Hack及其轉化工具 可以使用。 我們將繼續在未來的道路上前行: 期待您的意見反饋,同時也歡迎您參與到HHVM和Hack的大家庭中來。
當然還有許多其它特性,可以到官方上詳閱。
[項目官網]: http://www.hacklang.org.cn/
[下載地址]: http://www.hhvm.org.cn/install.php
[協助文檔]: http://www.hacklang.org.cn/cookbook.php
[許可協議]: GNU General Public License (GPL)
QQ群218127186二維碼
社區資源導航 HackLang微博 HHVM IRC Chat Hack程式設計語言範例 HHVM開源資訊 GitHub License Contributing Cookbook on Github Docs on Github