gpt4 book ai didi

android - Kotlin 不检查函数签名中具有某些返回类型的函数中的返回语句

转载 作者:行者123 更新时间:2023-11-29 18:33:20 32 4
gpt4 key购买 nike

class TestReturnFunction{
fun convertIntToString(intVal:Int?):String{
intVal?.let {
return it.toString()
}
}
}

在上面的 TestReturnFunction 中,有一个将 int 转换为 String 的简单函数。在函数内部我们使用 let 关键字,只有当 let 的参数不为 null 时才会运行代码块。因此,let 中的 return 语句只会在参数不为 null 时运行。

上面的问题是当 intVal 为 null 并且 Android studio 没有给出任何错误时,没有 return 语句。

如果我们查看 kotlin 中 let 关键字的文档,它会说:

Calls the specified function [block] with this value as its argument and returns its result.

此外,问题是如果我们查看上面的 kotlin 代码的 java 字节码,它看起来像下面

public final class TestReturnFunction {
@NotNull
public final String convertIntToString(@Nullable Integer intVal) {
if (intVal != null) {
int it = ((Number)intVal).intValue();
return String.valueOf(it);
} else {
return null;
}
}
}

现在,此代码的问题在于函数在 intVal 为 null 的情况下返回 null,但函数返回类型是不可为 null 的类型。这是错误还是功能?以前有人遇到过这个问题吗?

最佳答案

这是 Kotlin 1.3.0 版中存在的已知错误。

参见 https://youtrack.jetbrains.com/issue/KT-28061

如果可能升级到 Kotlin 版本 >= 1.3.20

关于android - Kotlin 不检查函数签名中具有某些返回类型的函数中的返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55224256/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com