Kotlin 2D 字符串数组使用indexOf 推断类型错误

问题描述 投票:0回答:1

我正在尝试使用一组二维数组来提取数据。我试图在数组中找到 String 对象的索引,并使用该索引从同一行但单独的列中提取数据,这样我就不需要为我需要的每一个数学部分提供一个由 16 个 if 循环组成的庞大链.

这是代码片段。

@Composable
    fun TimeCalculation(
        songVar: String, // songVar is a string that changes from another composable
        arrayOfSongs: kotlin.Array<kotlin.Array<String>>
    ) {
        if (songVar != "") {
            val index = arrayOfSongs.indexOf(songVar) // <-- Error on 'indexOf'
        } else {
            var time1 = 0.0
        }

arrayOfSongs 上面初始化如下:

val arrayOfSongs = rememberSaveable { // no errors here
    arrayOf(
        arrayOf("songTitle1", "3.46"),
        arrayOf("songTitle2", "4.22"),
// more code for a longer array follows

我将数组发送到可组合项,如下所示:

TimeCalculation(
    songVar, arrayOfSongs) // no errors here

最初,我在可组合项中声明了 arrayOfSongs 数组,但遇到了相同的错误。

kotlin multidimensional-array android-jetpack-compose
1个回答
0
投票

IDE 显示的错误消息有点令人困惑:

类型推断失败。类型参数 T 的值应该在输入类型(参数类型、接收者类型或预期类型)中提及。尝试明确指定它。

实际问题是

arrayOfSongs
的元素与您传递给
indexOf()
的参数之间存在类型不匹配。
arrayOfSongs
中的每个元素都是一个数组,但您试图传递一个简单的
String

如果您正在查找以

songVar
开头的第一个子数组的索引,请尝试如下操作:

val index = arrayOfSongs.indexOfFirst { it[0] == songVar }
© www.soinside.com 2019 - 2024. All rights reserved.