如何修复此HH FIXME[4410]



正在尝试修复HH投诉。。。基本上,代码正在做类似于这个的事情

Sfirstgroup = idx($largegroup, "first");
$final_thing = null
if(HHis_any_array(Sfirstgroup) && Sfirstgroup){
/*HH_FIXME[4110] Error revealed by is_arry refining to varray_or_darray */
$final_thing = idx(Sfirstgroup[0],"final_thing")
}

我认为这一定与第一组[0]没有集合类型有关。但不知道如何解决这个问题。。。

非常感谢!

您有两个类型错误:

  1. 使用方括号语法$firstgroup[0]进行索引与从is_any_array推断出的类型不太配合,后者推断出键类型的通配符泛型(即它是KeyedContainer<_,_>(。将$a[0]更改为idx($a, 0),或者如果所有密钥都是int,则使用is_vec_or_varray,因为它细化为vec<_>
  2. 您需要证明$firstgroup[0]KeyedContainer才能使用您对$final_thing的第二个idx调用。像is_any_array这样的细化检查对索引变量(像$firstgroup[0](不起作用,所以必须创建一个临时变量来细化它

总而言之,这里有一个可能的解决方案:

$firstgroup = idx($largegroup, "first");
$final_thing = null;
if(HHis_vec_or_varray($firstgroup)){
$first_item = $firstgroup[0];
if(HHis_any_array($first_item)) {
$final_thing = idx($first_item,"final_thing");
}
}

相关内容

  • 没有找到相关文章

最新更新