W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
hack除了是一門(mén)語(yǔ)言本身,Hack還為程序員提供了一整套工具。使用hh_client的類(lèi)型檢查,并檢查你的代碼是最有可能成為您最常用的工具。
Hack是Facebook發(fā)布的一種編程語(yǔ)言。
Hack是HHVM的編程語(yǔ)言。Hack將動(dòng)態(tài)類(lèi)型語(yǔ)言的快速開(kāi)發(fā)周期與靜態(tài)類(lèi)型提供的學(xué)科相結(jié)合,同時(shí)增加了其他現(xiàn)代編程語(yǔ)言中常見(jiàn)的許多功能。
Hack通過(guò)在編輯文件時(shí)逐步檢查文件來(lái)提供即時(shí)類(lèi)型檢查。它通常運(yùn)行在不到200毫秒的時(shí)間內(nèi),使其易于集成到開(kāi)發(fā)工作流程中,而不會(huì)引起明顯的延遲。
類(lèi)型注釋允許在參數(shù),類(lèi)成員變量和返回值上顯式鍵入代碼。
<?hh
class MyClass {
const int MyConst = 0;
private string $x = '';
public function increment(int $x): int {
$y = $x + 1;
return $y;
}
}
Generics允許類(lèi)和方法參數(shù)化(例如,一個(gè)類(lèi)被實(shí)例化或一個(gè)方法調(diào)用時(shí)關(guān)聯(lián)的類(lèi)型)與靜態(tài)類(lèi)型語(yǔ)言(如C#和Java)相同。
<?hh
class Box<T> {
protected T $data;
public function __construct(T $data) {
$this->data = $data;
}
public function getData(): T {
return $this->data;
}
}
Hack通過(guò)使用?操作符支持Nullable類(lèi)型。這引入了一種更安全的處理空值的方法,對(duì)于通常不允許將null作為其值之一的原始類(lèi)型(例如bool和int(使用?bool和?int分別))非常有用。操作員可以在任何類(lèi)型或類(lèi)別上使用。
Collections提供第一類(lèi),內(nèi)置參數(shù)化類(lèi)型,如Vector(有序的,基于索引的列表),Map(有序字典),Set(唯一值列表)和Pair(基于索引的兩個(gè)集合元件)。
Lambda簡(jiǎn)潔地允許定義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,形狀,類(lèi)型混搭,異步支持,向后兼容PHP代碼等等。
我們很高興有開(kāi)源的Hack和轉(zhuǎn)換工具,您可以使用自己的代碼庫(kù)。我們致力于繼續(xù)致力于這個(gè)項(xiàng)目:我們很樂(lè)意為您的工作提供反饋意見(jiàn),歡迎大家參與到HHVM和Hack社區(qū)。
本文翻譯自官網(wǎng):http://hacklang.org/
返回w3cschool官網(wǎng)主頁(yè)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式: