Richiami di Metodi in Kotlin

Ricordiamo che in Kotlin esistono due tipi di metodi (o funzioni):

Tipo di metodo Sintassi di richiamo Sintassi di dichiarazione
Di istanza o di oggetto nomeIstanza.nomeMetodo(...) All’interno di una classe o un oggetto:
Top Level nomeMetodo(...) All'esterno di una classe o un oggetto:

Vediamo quindi alcuni esempi di funzione:

fun printSuper (s : String) {

if(s != "") {

print(s)

}

}

class Printer(val s : String) {

fun printSuper () {

if(s != "") {

print(s)

}

}

}

object PrintSuper {

fun printSuper (s : String) {

if(s != "") {

print(s)

}

}

}

Le funzioni top level vengono citate anche nella mia introduzione a Kotlin. Ricordo che, come detto nella lezione sui Metodi se il corpo produce un risultato, ogni possibile ramo del flusso del codice deve restituire qualcosa o lanciare un’eccezione:

class Printer2(val s : String) {

fun printSuper () : Boolean {

if(s != "") {

print(s)

return true

}

return false

}

}

fun printSuper (s : String) : Boolean {

if(s != "") {

print(s)

return true

}

return false

}

object PrintSuper {

fun printSuper (s : String) : Boolean{

if(s != "") {

print(s)

return true

}

return false

}

}

Se invece il corpo non produce nessun risultato esso è un metodo che ritona un Unit (leggasi void per chi conosce il Java, C# o C/C++). Fino ad adesso se la funzione non torna niente abbiamo omesso il tipo di ritorno. Lo possiamo ancora fare in quanto queste due funzioni sono identiche:

fun main(args: Array<String>) : Unit {

println("Digita la dimensione del primo lato")

var array = arrayOfNulls<Int>(3)

array[0] = readLine()!!.toIntOrNull()

println("Digita la dimensione del secondo lato")

array[1] = readLine()!!.toIntOrNull()

println("Digita la dimensione del terzo lato")

array[2] = readLine()!!.toIntOrNull()

if (null in array) {

println("Errore uno o più lati non sono stati inseriti correttamente")

return

}

when (array.distinct().size) {

1 -> println("triangolo equilatero")

2 -> println("triangolo isoscele")

3 -> println("triangolo scaleno")

}

return

}

È uguale a:

fun main(args: Array<String>) {

println("Digita la dimensione del primo lato")

var array = arrayOfNulls<Int>(3)

array[0] = readLine()!!.toIntOrNull()

println("Digita la dimensione del secondo lato")

array[1] = readLine()!!.toIntOrNull()

println("Digita la dimensione del terzo lato")

array[2] = readLine()!!.toIntOrNull()

if (null in array) {

println("Errore uno o più lati non sono stati inseriti correttamente")

return

}

when (array.distinct().size) {

1 -> println("triangolo equilatero")

2 -> println("triangolo isoscele")

3 -> println("triangolo scaleno")

}

return

}

results matching ""

    No results matching ""