32 lines
1.3 KiB
Plaintext
32 lines
1.3 KiB
Plaintext
fun fun1() = println("No arguments")
|
|
|
|
fun fun2(i: Int) = println("One argument = $i")
|
|
|
|
fun fun3(i: Int, j: Int = 0) = println("One required argument = $i, one optional argument = $j")
|
|
|
|
fun fun4(vararg v: Int) = println("Variable number of arguments = ${v.asList()}")
|
|
|
|
fun fun5(i: Int) = i * i
|
|
|
|
fun fun6(i: Int, f: (Int) -> Int) = f(i)
|
|
|
|
fun fun7(i: Int): Double = i / 2.0
|
|
|
|
fun fun8(x: String) = { y: String -> x + " " + y }
|
|
|
|
fun main() {
|
|
fun1() // no arguments
|
|
fun2(2) // fixed number of arguments, one here
|
|
fun3(3) // optional argument, default value used here
|
|
fun4(4, 5, 6) // variable number of arguments
|
|
fun3(j = 8, i = 7) // using named arguments, order unimportant
|
|
val b = false
|
|
if (b) fun1() else fun2(9) // statement context
|
|
println(1 + fun6(4, ::fun5) + 3) // first class context within an expression
|
|
println(fun5(5)) // obtaining return value
|
|
println(kotlin.math.round(2.5)) // no distinction between built-in and user-defined functions, though former usually have a receiver
|
|
fun1() // calling sub-routine which has a Unit return type by default
|
|
println(fun7(11)) // calling function with a return type of Double (here explicit but can be implicit)
|
|
println(fun8("Hello")("world")) // partial application isn't supported though you can do this
|
|
}
|