Почему этот оператор return не работает, пока функция println () работает в Kotlin? - PullRequest
0 голосов
/ 10 октября 2019
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")
     }

}

Это выводит «Это пришло из функции typeOfCustomers в классе CustomerData» на консоль. Но когда я использую 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 ]

3 голосов
/ 10 октября 2019

Return просто возвращает объект из функции. В вашем случае возвращаемый объект является строкой. Чтобы напечатать строку, вам нужно сделать это:

val typeOfCustomer = CustomerData.typeOfCustomers()

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

0 голосов
/ 11 октября 2019

Оба ваших примера вызывают CustomerData.typeOfCustomers().

В первом примере этот вызов записывает строку непосредственно в консоль, поэтому вы ее видите.

Во втором примеревызов возвращает строку, но ничего с ней не делает , поэтому строка просто отбрасывается.

Как и в большинстве современных языков, в Kotlin результатом вызова функции / метода является значение, изначение всегда является действительным утверждением;значение будет просто проигнорировано, если вы что-то с ним не сделаете.

Если вы вместо этого использовали это значение в вызове println():

println(CustomerData.typeOfCustomers())

… тогда вы увидите строку наконсоль, как и ожидалось. Или вы можете присвоить результат переменной:

val type = CustomerData.typeOfCustomers()

Или использовать его в выражении:

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

Или вызвать один из его методов или использовать его любым другим способом.

В противном случае Kotlin сделает вызов, но просто проигнорирует результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...