hacklang - 如何修复此 HH FIXME [4410]?
问题描述
试图解决 HH 的抱怨......基本上代码正在做类似的事情
Sfirstgroup = idx($largegroup, "first");
$final_thing = null
if(HH\is_any_array(Sfirstgroup) && Sfirstgroup){
/*HH_FIXME[4110] Error revealed by is_arry refining to varray_or_darray */
$final_thing = idx(Sfirstgroup[0],"final_thing")
}
我认为它必须与 firstgroup[0] 没有集合类型有关。但无法弄清楚如何解决这个问题......
非常感谢!
解决方案
您有两种类型错误:
- 使用方括号语法
$firstgroup[0]
的索引不适用于推断类型 fromis_any_array
,它推断键类型的通配符泛型(即它是 aKeyedContainer<_,_>
)。如果您的所有键都是,则更$a[0]
改为idx($a, 0)
或使用,因为它精炼为。is_vec_or_varray
int
vec<_>
- 你需要证明
$firstgroup[0]
是一个KeyedContainer
使用你的第二个idx
调用$final_thing
。细化检查 likeis_any_array
不适用于索引变量(如$firstgroup[0]
),因此您必须创建一个临时变量来细化它。
总而言之,这是一种可能的解决方案:
$firstgroup = idx($largegroup, "first");
$final_thing = null;
if(HH\is_vec_or_varray($firstgroup)){
$first_item = $firstgroup[0];
if(HH\is_any_array($first_item)) {
$final_thing = idx($first_item,"final_thing");
}
}
推荐阅读
- node.js - 我正在使用 Nodejs/express + mongoDB,我的 http PUT 请求根本没有通过
- google-bigquery - 从 BigQuery 获取数据到 Power BI
- node.js - 服务器上的节点应用程序不起作用,抛出快速错误
- pyspark - PySpark (AWS Glue) 目录动态帧顺序是否在加载时具有确定性?
- laravel - npm run dev 在带有 Laravel UI 的新 Laravel 应用程序上失败
- java - 当 pom.xml 中存在 TestContainers 依赖项时,未检测到 JUnit 5 测试
- mysql - 为什么我无法使用 nodemailer 发送邮件?
- progressive-web-apps - 为什么在使用气泡 io 注册服务工作者时我的 Mime 类型不正确?
- networkx - 隔离边缘(街道)以创建颜色编码的叶图的最佳方法
- c# - 将静态文件提供给特定 IP 地址