如何在黑客中访问可以为空的形状字段?

时间:2018-03-15 16:30:15

标签: hacklang

我有一个形状

type foo = shape(
  ?'bar' => float,
  ...
);

现在,如果我尝试按以下方式访问字段bar的值,

do_something_with($rcvd['bar']);

其中$ rcvd属于foo类型,它不起作用(显然)

如何访问形状的null安全成员?

2 个答案:

答案 0 :(得分:4)

好的,发现它:https://docs.hhvm.com/hack/reference/class/HH.Shapes/idx/

所以正确的方法是,

Shapes::idx($rcvd, 'bar');

答案 1 :(得分:0)

您可以使用答案中提到的catalog_num方法。

但是您还可以使用空合并运算符,您可能更熟悉PHPC#等其他编程语言。

请参阅:https://docs.hhvm.com/hack/expressions-and-operators/coalesce

示例:

> <ItemsControl ItemsSource="{Binding OuterList}">
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Name}" />            
        <ItemsControl ItemsSource="{Binding InnerList}" />
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>

Hack还支持空合并等于运算符。

示例:

Shapes::idx