Creé un método y la devolución está Result<R>
en una clase de MyClass<R>
, pero el mensaje de error es: 'kotlin.Result' no se puede usar como un tipo de devolución
También busqué algunas sugerencias en el código fuente del resultado; ¿por qué esto es tan?
Código de prueba (usando 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
ersin-ertan
fuente
fuente
kotlin.Result
viene No puedo encontrar esa clase en la biblioteca estándar .Respuestas:
Desde Kotlin KEEP :
Nota: si solo desea experimentar con el
Result
tipo, puede omitir esta limitación proporcionando un argumento del compilador de Kotlin-Xallow-result-return-type
.Al usar Gradle en un proyecto de Java o Android: Defina el argumento del compilador en la tarea de compilación de Kotlin. Se aplica tanto al código de producción como a las pruebas.
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } }
Al usar Gradle en un proyecto multiplataforma: Defina el argumento del compilador para cada compilación de destino. Se aplica tanto al código de producción como a las pruebas.
kotlin { targets.all { compilations.all { kotlinOptions { freeCompilerArgs = freeCompilerArgs + "-Xallow-result-return-type" } } } }
fuente
android { kotlinOptions { freeCompilerArgs = ["-Xallow-result-return-type"] } }
Si usa Android esta solución para gradle
fuente
Si usa 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>
Si usa gradle:
compileKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" kotlinOptions.freeCompilerArgs = ["-Xallow-result-return-type"] }
Fuente: http://rustyrazorblade.com/post/2018/2018-12-06-kotlin-result/
fuente