Я создал метод, и возвращаемый результат находится Result<R>
в классе MyClass<R>
, но сообщение об ошибке: «kotlin.Result» не может использоваться как возвращаемый тип.
Я также заглянул в исходный код Result в поисках подсказок; почему это так?
Тестовый код (с использованием v. 1.3-RC).
class MyClass<R>(val r: R) {
fun f(): Result<R> { // error here
return Result.success(r)
}
}
fun main(args: Array<String>) {
val s = Result.success(1)
val m = MyClass(s)
}
function
kotlin
return-type
Эрсин-Эртан
источник
источник
kotlin.Result
взялось? Я не могу найти этот класс в стандартной библиотеке .Ответы:
От Kotlin KEEP :
Примечание: если вы просто хотите поэкспериментировать с
Result
типом, вы можете обойти это ограничение, указав аргумент компилятора Kotlin-Xallow-result-return-type
.При использовании Gradle в проекте Java или Android: определите аргумент компилятора в задаче компиляции Kotlin. Это применимо как для производственного кода, так и для тестов.
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } }
При использовании Gradle в многоплатформенном проекте: определите аргумент компилятора для каждой целевой компиляции. Это применимо как для производственного кода, так и для тестов.
kotlin { targets.all { compilations.all { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } } } }
источник
android { kotlinOptions { freeCompilerArgs = ["-Xallow-result-return-type"] } }
Если вы используете Android, это решение для gradle
источник
Если вы используете maven:
<plugin> <artifactId>kotlin-maven-plugin</artifactId> <configuration> <jvmTarget>1.8</jvmTarget> <args> <arg>-Xallow-result-return-type</arg> </args> </configuration> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version>
Если вы используете gradle:
compileKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] }
Источник: http://rustyrazorblade.com/post/2018/2018-12-06-kotlin-result/
источник