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
  • 代码必须在函数或类之内
  • 方法名不能呢给和类名一样
  • 不允许调用父类的静态方法
  • 不允许静态调用对象
  • 异步编程


相关链接

相关文章
|
6天前
|
JavaScript 前端开发 Oracle
软件工程师,学习下JavaScript ES6新特性吧
软件工程师,学习下JavaScript ES6新特性吧
26 9
|
5月前
|
JavaScript 前端开发 开发者
探究ECMAScript 6的新特性
ECMAScript 6(也称为ES6或ECMAScript 2015)是JavaScript的一个重大更新,它引入了许多新特性和改进,使得JavaScript的开发更加简单和高效。在本篇博客中,我们将详细介绍ECMAScript 6的新特性。
67 1
探究ECMAScript 6的新特性
|
存储 安全 编译器
“C++基础入门指南:了解语言特性和基本语法”(下)
“C++基础入门指南:了解语言特性和基本语法”(下)
89 0
|
Java 编译器 程序员
“C++基础入门指南:了解语言特性和基本语法”(上)
“C++基础入门指南:了解语言特性和基本语法”(上)
52 0
|
存储 编译器 C++
“C++基础入门指南:了解语言特性和基本语法”(中)
“C++基础入门指南:了解语言特性和基本语法”(中)
89 0
|
JavaScript 前端开发
ECMAScript 6新特性简介
ECMAScript 6新特性简介
ECMAScript 6新特性简介
|
物联网 C# 索引
[翻译] C# 8.0 新特性
原文:[翻译] C# 8.0 新特性 原文: Building C# 8.0 [译注:原文主标题如此,但内容大部分为新特性介绍,所以意译标题为 "C# 8.0 新特性"] C# 的下一个主要版本是 8.0。
1273 0
|
C# 图形学
Unity 3D开发-C#脚本语言的一些基础用法
Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1877 0
下一篇
无影云桌面