Ошибка вывода типа при использовании метода метода с JSONArray в Kotlin - PullRequest
0 голосов
/ 18 марта 2020

У меня есть простая итерация через JSONArray, где я пытаюсь найти строковое значение внутри MutableList <'String'>? FilterLocations:

for ((index, feature) in features.withIndex()) {
val userIds = feature.getProperty("userIds").asJsonArray
    for(userIdOfLocation in userIds) {
        if (userIdOfLocation in filteredLocations) {
            features.removeAt(index)
        }
    }
}

Однако компилятор поднимает эту проблему при попытке использовать «in»:

Ошибка вывода типа: значение параметра типа T должно быть упомянуто в типы ввода (типы аргументов, тип получателя или ожидаемый тип). Попробуйте указать это явно

Я не уверен, как я должен указать это здесь явно?

Редактировать: Я немного упростил код, теперь он выглядит следующим образом:

private fun filterMarkerLocations(markers: MutableList<Feature>, id: String): Feature? {
    for (marker in markers) {
        val assignedUserIds = marker.getProperty("userIds").asJsonArray
        if(id in assignedUserIds) {
            println("hit")
            println(marker)
            println(id)
            return marker
        }
    }
    return null
}

Все та же проблема.

1 Ответ

0 голосов
/ 20 марта 2020

Попробуйте включить вывод нового типа - вам нужно добавить аргумент компилятора "-XXLanguage:+NewInference"

Groovy Gradle DSL:

compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-XXLanguage:+NewInference"]
    }
}

Kotlin Gradle DSL:

tasks.withType(KotlinCompile::class)
        .forEach {
            it.kotlinOptions { freeCompilerArgs = listOf("-XXLanguage:+NewInference") }
        }
...