我正在尝试在 Hack 中实现单例模式。但是,我一直遇到 Nullable 的问题。
<?hh //strict
class Foo {
private static Foo $foo;
public function __construct() {
// Do stuff here.
}
public static function theFoo(): Foo {
if (null === self::$foo) {
self::$foo = new Foo();
}
return self::$foo;
}
}
$aFoo = Foo::theFoo();
执行时出现错误:
Catchable fatal error: Hack type error: Please assign a value at foo.hh line 4
类型检查器也返回类似的结果:
foo.hh:4:24,27: Please assign a value (Typing[4055])
如何为静态属性分配默认值?