为什么可以';t Kotlin使用==?推断布尔表达式的返回类型?

为什么可以';t Kotlin使用==?推断布尔表达式的返回类型?,kotlin,warnings,Kotlin,Warnings,据我所知,Kotlin应该能够根据函数体中使用的最后一个表达式推断函数的返回类型 fun returnInt() { 42 + 24 } 但是,当我创建一个函数时,它希望得到相等(=)操作的结果,例如: fun returnBoolean() { someBool == otherBool } 我得到以下警告: 未使用的等于表达式 我可以通过添加返回类型和返回语句来解决此问题: fun returnBoolean(): Boolean { return someBoo

据我所知,Kotlin应该能够根据函数体中使用的最后一个表达式推断函数的返回类型

fun returnInt() {
    42 + 24
}
但是,当我创建一个函数时,它希望得到相等(=)操作的结果,例如:

fun returnBoolean() {
    someBool == otherBool
}
我得到以下警告:

未使用的等于表达式

我可以通过添加返回类型和返回语句来解决此问题:

fun returnBoolean(): Boolean {
    return someBool == otherBool
}
但我只是想知道为什么
returnBoolean()
会得到一个“Unused equals expression”,而
returnInt()
却没有

我真傻

Kotlin能够使用函数声明中的等号推断此类语句:

fun returnInt() =
    42 + 24


fun returnBoolean() =
    someBool == otherBool



作为Kotlin的初学者,我发现有趣的是,
returnInt()
没有收到警告,但如果您在运行时尝试使用它(在我的例子中,我将它作为参数传递给
java.lang.String.format
),它将抛出异常。

我不知道Kotlin,但您的
42+42
似乎无效,引起错误的第二段代码更正确。似乎对于使用
{}
的定义,您需要一个显式的
返回值
。您的第一个函数不被推断为
Int
,Kotlin推断为
单位
。您的returnInt方法不返回Int-它只是将两个数字相加,对它们不做任何处理。
fun stuff()=…
符号等于
fun stuff(){return…}
。在这两种情况下,在您的第一篇文章中,您都缺少对
returnInt
的调用,而
returnInt
不应引发异常。是否确实要将
returnInt()
传递到
String.format
而不是方法引用
returnInt