Hack语言新特性简介

简介: Facebook发布的Hack语言是一个运行在HHVM上的语言,在PHP的基础上添加了静态类型检查和一些现代编程语言的特性。

Facebook发布的Hack语言是一个运行在HHVM上的语言,在PHP的基础上添加了静态类型检查和一些现代编程语言的特性。

image.png


类型标记

对于大型项目而言,类型检查可以避免很多问题。

<?hh

classMyClass {

 constint MyConst = 0;

 privatestring$x = '';

 publicfunctionincrement(int$x): int {

   $y = $x + 1;

   return$y;

 }

}

泛型

借鉴了C#和Java

<?hh

classBox<T> {

 protected T $data;

 publicfunction__construct(T $data) {

   $this->data = $data;

 }

 publicfunctiongetData(): T {

   return$this->data;

 }

}

nullable类型

?运算符代表可为空值。


集合

在PHP数组的基础上添加了更丰富的集合类型:

  • Vector
  • Map
  • Set
  • Pair


匿名函数

PHP 5.3开始加入了匿名函数支持,但是和大多数语言不同,匿名函数内需要访问外层的变量的话,需要事先使用use声明。

function ($quantity, $product) use ($tax, &$total)

           {

               $pricePerItem = constant(__CLASS__ . "::PRICE_" .

                   strtoupper($product));

               $total += ($pricePerItem * $quantity) * ($tax + 1.0);

           };

Hack改进了PHP的匿名函数:

<?hh

functionfoo(): (function(string): string) {

 $x = 'bar';

 return$y ==> $x . $y;

}

functiontest(): void {

 $fn = foo();

 echo$fn('baz'); // barbaz

}

其他特性

  • 静态动态分离的方法分发
  • 覆盖父类方法必须声明
  • XHP,输出HTML和XML时自动过滤XSS
  • 改进了trait
  • Continuas
  • 代码必须在函数或类之内
  • 方法名不能呢给和类名一样
  • 不允许调用父类的静态方法
  • 不允许静态调用对象
  • 异步编程


相关链接

相关文章
|
存储 编译器 C++
“C++基础入门指南:了解语言特性和基本语法”(中)
“C++基础入门指南:了解语言特性和基本语法”(中)
97 0
|
Java 编译器 程序员
“C++基础入门指南:了解语言特性和基本语法”(上)
“C++基础入门指南:了解语言特性和基本语法”(上)
70 0
|
JavaScript 前端开发
ECMAScript 6新特性简介
ECMAScript 6新特性简介
ECMAScript 6新特性简介
|
Web App开发 JavaScript 前端开发
JavaScript 编程精解 中文第三版 八、Bug 和错误
八、Bug 和错误 原文:Bugs and Errors 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 调试的难度是开始编写代码的两倍。
1229 0