Stworzyłem metodę i zwraca Result<R>
w klasie MyClass<R>
, ale komunikat o błędzie to: „kotlin.Result” nie może być używany jako typ zwracany
Zajrzałem również do kodu źródłowego wyników, aby uzyskać kilka wskazówek; dlaczego tak jest?
Kod testowy (przy użyciu wersji 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
źródło
źródło
kotlin.Result
bierze? Nie mogę znaleźć tej klasy w bibliotece standardowej .Odpowiedzi:
Z Kotlin KEEP :
Uwaga: jeśli chcesz po prostu eksperymentować z
Result
typem, możesz ominąć to ograniczenie, podając argument kompilatora Kotlin-Xallow-result-return-type
.Podczas korzystania z Gradle w projekcie Java lub Android: Zdefiniuj argument kompilatora w zadaniu kompilacji Kotlin. Dotyczy to zarówno kodu produkcyjnego, jak i testów.
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } }
W przypadku korzystania z Gradle w projekcie wieloplatformowym: Zdefiniuj argument kompilatora dla każdej kompilacji docelowej. Dotyczy to zarówno kodu produkcyjnego, jak i testów.
kotlin { targets.all { compilations.all { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } } } }
źródło
android { kotlinOptions { freeCompilerArgs = ["-Xallow-result-return-type"] } }
Jeśli używasz Androida to rozwiązanie dla gradle
źródło
freeCompilerArgs = listOf("-Xallow-result-return-type")
Jeśli używasz 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>
Jeśli używasz gradle:
compileKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] }
Źródło: http://rustyrazorblade.com/post/2018/2018-12-06-kotlin-result/
źródło