Ich habe eine Methode erstellt und die Rückgabe erfolgt Result<R>
in einer Klasse von MyClass<R>
, aber die Fehlermeldung lautet: 'kotlin.Result' kann nicht als Rückgabetyp verwendet werden
Ich habe auch im Quellcode des Ergebnisses nach einigen Hinweisen gesucht. Warum ist das so?
Testcode (unter Verwendung von Version 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
ersin-ertan
quelle
quelle
kotlin.Result
das? Ich kann diese Klasse nicht in der Standardbibliothek finden .Antworten:
Aus dem Kotlin KEEP :
Hinweis: Wenn Sie nur mit dem
Result
Typ experimentieren möchten, können Sie diese Einschränkung umgehen, indem Sie ein Kotlin-Compiler-Argument angeben-Xallow-result-return-type
.Bei Verwendung von Gradle in einem Java- oder Android-Projekt: Definieren Sie das Compiler-Argument für die Kotlin-Kompilierungsaufgabe. Dies gilt sowohl für Produktionscode als auch für Tests.
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } }
Bei Verwendung von Gradle im Multiplattform-Projekt: Definieren Sie das Compiler-Argument für jede Zielkompilierung. Dies gilt sowohl für Produktionscode als auch für Tests.
kotlin { targets.all { compilations.all { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } } } }
quelle
android { kotlinOptions { freeCompilerArgs = ["-Xallow-result-return-type"] } }
Wenn Sie Android diese Lösung für Gradle verwenden
quelle
Bei Verwendung von 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>
Bei Verwendung von Gradle:
compileKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] }
Quelle: http://rustyrazorblade.com/post/2018/2018-12-06-kotlin-result/
quelle