hack入門教程

2018-09-26 18:29 更新

入門

如果您是Hack的新手,該入門指南應(yīng)該能夠幫助您快速熟悉基礎(chǔ)知識(shí); 如果您還沒有閱讀我們對(duì)Hack的主要功能的介紹,此后,您可以深入了解有興趣的主題,以獲取更多關(guān)于Hack提供的知識(shí)。

概觀

您需要編寫和執(zhí)行Hack代碼的先決條件非常簡(jiǎn)單:

  • HHVM運(yùn)行
  • The Hack typechecker (包括作為HHVM運(yùn)行時(shí)構(gòu)建的一部分)
  • 可選地,具有Hack感知的編輯器。我們推薦Nuclide,其一流的支持Hack。

(1)執(zhí)行Hack代碼(2)運(yùn)行Hack類型檢查器(這是使用Hack語言的基礎(chǔ)優(yōu)勢(shì))來確保您的代碼寫得好,安全和一致,所以HHVM運(yùn)行時(shí)是必需的。

嘗試我們的交互式hack教程

您可以開始學(xué)習(xí)Hack,而無需安裝任何軟件。只需轉(zhuǎn)到交互式Hack教程,逐步了解一些Hack功能。

你的第一個(gè)hack程序

讓我們?cè)谖鍌€(gè)簡(jiǎn)單的步驟中潛入并創(chuàng)建您的第一個(gè)Hack程序。

1.安裝HHVM和Typechecker

查看有關(guān)如何安裝HHVM 的HHVM入門指南

安裝HHVM后,Hack typechecker將可用于在運(yùn)行代碼之前靜態(tài)檢查代碼。它不是一個(gè)編譯器; 而是一個(gè)超快的代碼分析器,在代碼運(yùn)行之前嘗試捕獲動(dòng)態(tài)編程錯(cuò)誤,而不是在之前或之后。

類型檢查器被調(diào)用,hh_client并且在HHVM團(tuán)隊(duì)支持的所有官方包中都可以使用HHVM。如果您正在使用社區(qū)提供的軟件包,那么hh_client很可能也是可用的,但您應(yīng)該與您的軟件包維護(hù)者聯(lián)系。

2.為Typechecker設(shè)置

選擇要存儲(chǔ)Hack代碼的目錄。在這個(gè)目錄下運(yùn)行touch .hhconfig。這將創(chuàng)建一個(gè)空文件,hh_client尋找作為類型檢查代碼的根。為了正確分析您的代碼,類型檢查器需要進(jìn)行全局分析,并能夠查看所有代碼。這意味著它為這個(gè)根目錄下的任何代碼假定一個(gè)全局自動(dòng)裝載器,并將這個(gè)根目錄下的所有代碼一起作為一個(gè)項(xiàng)目一起檢查。

3.寫你的第一個(gè)Hack程序

使用您選擇的編輯器(例如,Nuclide,vim,Sublime Text),讓我們創(chuàng)建一個(gè)first.php使用以下代碼調(diào)用的文件:

 {
  public function __construct(private T $elem) {
  }


  public function get(): T {
    return $this->elem;
  }
}


function get_int(): int {
  return 42;
}


function use_box(): void {
  $box = new Box(get_int());
  $i = $box->get();
  var_dump($i);
}


use_box();

該入門指南假定了一些編程知識(shí)(例如,什么是類,什么是函數(shù)或方法等)。如果你熟悉PHP,Hack有著相似的外觀和感覺。如果你不熟悉PHP,那么所有這一切都是新的,但希望你的一般結(jié)構(gòu)是熟悉的。意見提供各種細(xì)節(jié),但這里是要點(diǎn):

  • 這個(gè)例子是創(chuàng)建一個(gè)class叫做Box。
  • 這個(gè)Box class是通用的。
  • 在構(gòu)造函數(shù)中使用構(gòu)造函數(shù)參數(shù)提升。
  • 函數(shù)參數(shù)和返回類型都使用類型注釋。

4.運(yùn)行Typechecker

如果您使用的是Nuclide等編輯器,則在編寫程序時(shí)會(huì)看到類型檢查信息。如果從命令行運(yùn)行typechecker命令只是

%hh_client

你應(yīng)該看到:

No errors!

現(xiàn)在想象如果我們將返回類型get_int()改為bool而不是int。如果你運(yùn)行typechecker,你會(huì)看到這樣的:

first.php:15:10,11: Invalid return type (Typing[4110])
  first.php:14:21,24: This is a bool
  first.php:15:10,11: It is incompatible with an int

這表明了Hack類型系統(tǒng)和類型檢查器的強(qiáng)大功能:它可以讓您知道您可能不會(huì)返回您的想法。類型檢查器對(duì)所有的代碼進(jìn)行這些檢查,而不必運(yùn)行它們。

5.在HHVM中運(yùn)行代碼

在您得到您的Hack程序以類型檢查清除沒有錯(cuò)誤后,您可以在HHVM中運(yùn)行該程序。

%hhvm first.php

這里是輸出:

INT(42)
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)