原文链接:http://www.hacklang.org.cn/
Hack编程语言中文官网 <?hh |
什么是Hack编程语言
Hack是一种编程语言,用于HHVM中,可与PHP结合,相互无缝操作使用。Hack 实现PHP式的快速开发周期,提供静态类型,同时增加了许多在其他现代编程语言中常见的特性。
Hack通过本地服务器监控文件系统来提供瞬时的类型检查。它通常运行在不到200毫秒,因此很容易集成到您的开发工作流程,而不会引入明显的延迟。
Hack的目标为开发人员提供了一个方式来写干净,安全和可重构代码,同时要保持与当前的PHP代码库一定程度的兼容性。实现这一目标的主要途径是向开发人员提供一种方式来检查PHP函数和类的类型信息,因而提供了类型检查工具。此外,还提供了特定的语言功能:
- 类型标注 这个特性将允许php代码来标注参数,类成员变量和返回值的类型。(原本的PHP是对参数的类型不敏感的。比如字符串型和整形。)
<?hh class MyClass { const int MyConst = 0; private string $x = ''; public function increment(int $x): int { $y = $x + 1; return $y; } }
- 泛型,PHP(在同样的静态类型语言如C语言、Java、C#)。泛型允许类和方法是参数化(即,当一个类被实例化或方法调用,进行类型相关联)。这里有一个例子:
<?hh class 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:
<?hh function 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)