codecamp

hack注释

在Hack中有三个(只有三个)可以明确注释类型的地方:

  • 函数/方法返回
  • 参数
  • 类属性

函数和方法返回

函数和方法返回类型用:以下函数或方法的名称和参数列表进行注释:

function <name>([parameters]):<type> 
function foo():int {}

注意:您可以在名称/参数列表和:。 注意:关闭也可以注释返回类型

功能和方法参数

函数和方法参数用参数名称前面的类型注释如下:

function <name>(<ptype> <$ pname>):<rtype> 
function foo(int $ x):void {}

注意:参数的默认参数必须与提供的类型注释相匹配。

类属性

类属性使用属性名称之前的类型进行注释,如下所示:

<modifiers> <type> <$ pname>; 
public int $ x;

Abstract final classes

Hack中的一个类可以被标记为abstract和final。这意味着该类只能具有静态方法和属性,而不能构造函数。static除了数据类型之外,还可以注释属性。

abstract final class X {
  public static array<int> $a = array();
}

抽象类常量

除了使用数据类型键入属性之外,还可以在抽象类或接口中声明常量抽象。

interface I {
  abstract const int MY_CONST;
}

abstract class Y {
  abstract const int MY_CONST;
}

局部变量

您不要键入注释局部变量。它们由类型检测器自动推断


hack类型系统
hack推理
温馨提示
下载编程狮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; }