将元素添加到可为空的向量



好吧,所以我得到了一个私人的?Vector $lines在构造对象时为空,现在我想向该 Vector 添加字符串。以下 Hack 代码运行良好:

<?hh
class LineList {
    private ?Vector<string> $lines;
    public function addLine(string $line): void {
        $this->file[] = trim($line);
    }
}

但是当用hh_client检查代码时,它会给我以下警告:

$this->file[]]: a nullable type does not allow array append (Typing[4006])
[private ?Vector<string> $lines]: You might want to check this out

问题:如何在不检查器推送此警告的情况下将元素添加到 Vector?

最简单的方法是不使用可为空的 Vector。 private Vector<string> $lines = Vector {};也解决了对构造函数的需求。

否则,您需要检查该值是否不为 null,然后附加到它:

public function addLine(string $line): void {
    $vec = $this->lines;
    if ($vec !== null) $vec[] = trim($line);
}

你不能只检查是否$this->lines !== null因为它有可能在检查和追加之间改变值(使用类似于tick函数的东西),因此为什么它被分配给局部变量。

相关内容

  • 没有找到相关文章

最新更新