hack 教程

教程说明:


Hack是Facebook发布的一种编程语言。

Hack是HHVM的编程语言。Hack将动态类型语言的快速开发周期与静态类型提供的学科相结合,同时增加了其他现代编程语言中常见的许多功能。

Hack通过在编辑文件时逐步检查文件来提供即时类型检查。它通常运行在不到200毫秒的时间内,使其易于集成到开发工作流程中,而不会引起明显的延迟。

主要语言功能

类型注释

类型注释允许在参数,类成员变量和返回值上显式键入代码。

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

Generics

Generics允许类和方法参数化(例如,一个类被实例化或一个方法调用时关联的类型)与静态类型语言(如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提供第一类,内置参数化类型,如Vector(有序的,基于索引的列表),Map(有序字典),Set(唯一值列表)和Pair(基于索引的两个集合元件)。

Lambda表达式

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和转换工具,您可以使用自己的代码库。我们致力于继续致力于这个项目:我们很乐意为您的工作提供反馈意见,欢迎大家参与到HHVM和Hack社区。

本文翻译自官网:http://hacklang.org/


温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }