首页 > 解决方案 > 创建一个包含字符串的单行函数有什么好处,而仅通过将字符串分配给变量是无法实现的?

问题描述

在 Kotlin 中,我了解可以将字符串直接分配给函数,例如:

fun foo(): String = "Hello World"

但是您也可以直接将 String 分配给变量:

var foobar: String = "Hello Word"

我的问题是,当你可以创建一个变量时,你为什么还要创建一个函数?我看不出这个功能存在的意义。

标签: kotlin

解决方案


关于有趣的事情

fun foo(): String = "Hello World"

是它使用的是表达式语法,并且相当于:

fun foo(): String {
    return "Hello World"
}

虽然只返回一个常量不是很有用,但使用表达式语法,避免{block}andreturn语句可以在整个函数可以用一个表达式表示的情况下允许更简洁的函数定义。

例如,如果foo()是一个类的方法,你可以使用该类的属性打招呼:

class Hello(var what : String = "World") {
    fun foo(): String = "Hello, $what!"
}

fun main() {
    val hello = Hello()
    println(hello.foo())

    hello.what = "Universe"
    println(hello.foo())
}

这打印:

Hello, World!
Hello, Universe!

推荐阅读