kotlin - Kotlin:“类型推断失败”
问题描述
有人知道我在这里做错了什么吗?
// ...
val alphabet = ('a'..'z').toList()
val str = "testing"
val arr = str.split("")
for (char in arr) {
var i = alphabet.indexOf(char) // Throws Error!
// ...
}
indexOf-method 导致“ Error:(10, 26) Kotlin: Type inference failed。类型参数 T 的值应该在输入类型(参数类型、接收器类型或预期类型)中提及。尝试显式指定它。 "
我试图“var i: Int = alphabet.indexOf(char)”和“alphabet.indexOf(char) as Int”。同样的结果...
这里有什么问题?
解决方案
我相信你的问题是你认为变量char
包含一个Char
值。如果是这种情况,那么indexOf
接受一个Char
值然后在List<Char>
调用该方法的字符列表 () 中查找该字符的位置是有意义的。
但是str.split()
返回的是 a List<String>
,而不是 a List<Char>
,char
a 也是String
。因此,您要求indexOf
方法告诉您 aString
在字符列表 ( List<Char>
) 中的位置。那没有意义。这就是问题的根源。我不确定这到底是如何转化为您从 Kotlin 编译器得到的错误的。
为了清楚起见,这一行产生了同样的错误:
var i = alphabet.indexOf("c") // Throws Error!
但编译器很喜欢这一行:
var i = alphabet.indexOf('c') // No Error!!!
推荐阅读
- javascript - 间歇性数据库搜索和下拉过滤器自我填充代码不起作用 - 看似随机 - 找不到模式
- macos - 如何从 Apple 下载经过公证的文件?
- django - 如何修复 Django 中的自动登录?
- three.js - 获取飞机的世界位置
- python - 检索序列的词向量并输入模型的最快方法?
- sql - 在 postgres/redshift 的多个表中使用 SELECT *
- angular - 成功登录后不需要的重定向到 keycloak 登录页面
- flutter - 为同一案例切换具有多个值的案例
- python - Pandas 过滤行本身中存在正则表达式模式的行
- python - ValueError:尝试在非包中进行相对导入#Python #Pycharm #pyOCD