hack文字形状

2018-11-01 17:34 更新

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

<?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();

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

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

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号