dictionary - Kotlin 地图类型推断失败
问题描述
我使用以下方法从 Kotlin 中的两个可变字符串列表创建了一个映射:
val mapNames = mutableMapOf(Pair(initList, nameList))
当我尝试访问我尝试过的键之一的值时
print(mapNames.get("BB")) and print(mapNames["BB"])
它抛出错误
错误:类型推断失败。类型参数 K 的值应该在输入类型(参数类型、接收者类型或预期类型)中提及。尝试明确指定它。
这两个列表都是字符串列表,我只是想简单地返回与键关联的值。我试图将其类型明确指定为 String ,但仍然抛出错误。我想知道我错过了什么?
解决方案
您尚未创建Map<String, String>
. 您创建了一个Map<List<String>, List<String>>
. 地图中唯一的键是initList
,它对应于值nameList
。这显然不是你想要的。您希望 in 中的每个事物都与 in 中的每个事物initList
相匹配nameList
并在地图中形成一个条目,这样您就会得到一个Map<String, String>
,对吗?
为此,您应该zip
列出以下列表:
val mapNames = initList.zip(nameList).toMap(mutableMapOf())
zip
这里创建一个List<Pair<String, String>>
, 并将mutableMapOf
该列表中的每一对转换为一个映射条目。然后您可以按预期访问地图。
推荐阅读
- loops - ansible 创建多个模板,每个模板都有递增的 var
- django - 我想添加名字和姓氏字段
- javascript - 为什么“+”运算符在将字符串解析为数字时起作用?
- javascript - 如何在没有提交按钮的情况下使我的数字输入动态?
- vim - 保存vim时保留“[”和“]”标记?
- data-visualization - Tableau - 排序无法正常工作(使用聚合总和)
- database - 跨线程管理事务
- python - Python 脚本。类还是函数?
- python - 消息:没有这样的元素:无法找到元素:{"method":"css selector","selector":"[name="uID"]"}
- javascript - 正则表达式获取“::”字符的最后一次出现