为什么在Kotlin中使用println()函数时,该return语句不起作用?

时间:2019-10-10 17:19:49

标签: object kotlin

fun main(args: Array<String>) {

    CustomerData.count = 98
    CustomerData.typeOfCustomers()

    println(CustomerData.count)

}
object CustomerData {

     var count: Int = -1

     fun typeOfCustomers(){
         println("This came from typeOfCustomers function in CustomerData class")
     }

}

这将向控制台输出“这来自CustomerData类中的typeOfCustomers函数”。但是,当我使用return而不是println()时,该行不会像下面的代码那样返回到控制台

fun main(args: Array<String>) {

    CustomerData.count = 98
    CustomerData.typeOfCustomers()

    println(CustomerData.count)

}
object CustomerData {

     var count: Int = -1

     fun typeOfCustomers():String{
         return "This came from typeOfCustomers function in CustomerData class"
     }

}

2 个答案:

答案 0 :(得分:3)

Return只是从函数中返回一个对象。在您的情况下,返回的对象是字符串。要打印字符串,您需要执行以下操作:

val typeOfCustomer = CustomerData.typeOfCustomers()

println("${CustomerData.count} $typeOfCustomer")

答案 1 :(得分:0)

您的示例都调用CustomerData.typeOfCustomers()

在第一个示例中,该调用将字符串直接写入控制台,这就是您看到它的原因。

在第二个示例中,调用返回字符串,但不执行任何操作,因此该字符串将被简单丢弃。

就像大多数现代语言一样,在Kotlin中,函数/方法调用的结果是一个值,而值始终是有效的语句;除非您使用该值,否则该值将被忽略。

如果您改为在println()调用中使用该值:

println(CustomerData.typeOfCustomers())

...然后,您将按预期在控制台上看到字符串。或者,您可以将结果分配给变量:

val type = CustomerData.typeOfCustomers()

或在表达式中使用它:

val message = "Call returned: " + CustomerData.typeOfCustomers()

或调用其方法之一,或以其他任何方式使用它。

否则,Kotlin会拨打电话,而只是忽略结果。