
上QQ阅读APP看书,第一时间看更新
3.1.2 返回类型和类型推断
greet()函数返回一个字符串,但是我们没有显式地指定它。这是因为Kotlin可以推断出具有非块体的函数(即,没有{}的函数)的返回类型。返回类型推断发生在编译时。让我们通过在代码中犯错误来验证这一点:

根据上下文,Kotlin确定greet()返回一个字符串。我们将它赋值给Int类型的变量message,这是不对的,代码将无法编译。
使用类型推断是安全的,类型检查是在编译时进行的,将其用于内部API以及函数是由=分隔的单表达式。但是,如果函数是供外部使用的,或者函数更复杂,则显式指定返回类型。这将帮助你和函数的使用者清楚地看到返回类型。它还可以防止在推断返回类型以及将实现改为返回不同的类型时可能出现的意外。
只有当函数体是单表达式而不是块时,Kotlin才会推断函数的返回类型。
让我们修改greet()函数来显式地指定返回类型。

返回类型以:作为前缀,并紧跟在参数列表之后。仍然不允许使用return关键字,因为函数体是单表达式而不是块。
如果返回类型很明显,就省略它,否则就指定它。
如果函数没有返回任何东西会怎样?接下来让我们访问那些讨厌的void函数。