codecamp

hack文字形状

一个形状的文字创造了一个有价值的列表字段初始值设定项指定的字段命名的形状。在该列表中不需要的形状类型定义的字段说明符顺序相同的字段的初始化顺序。例如:

<?hh

namespace Hack\UserDocumentation\Shapes\Literals\Examples\Literals;

type Point = shape('x' => int, 'y' => int);

class C {
  // All the right hand side expressions are shape literals

  // Can't have a shape as a constant value
  const Point ORIGIN = shape('x' => 0, 'y' => 0);   // initializer rejected

  public static Point $p2 = shape('x' => 0, 'y' => 5);   // initializer okay
  public Point $p3 = shape('x' => 0, 'y' => 5);    // initializer okay
}

function createPoint(int $x = 0, int $y = 0): Point {
  return shape('y' => $y, 'x' => $x); // shape literal, no compile-time constant
}

function run(): void {
  var_dump(createPoint(9, 3));
  var_dump(new C());
}

run();

文字形状必须初始化形状中的所有字段。

请注意,与形状一起使用的术语字面值是一个误称; 字段初始化器中的表达式不需要是编译时常量。即使所有的初始化器都是常量表达式,生成的形状文字本身也不是,因此不能在需要这样的表达式的上下文中使用。

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; }