下面例子是個基本 function 有參數,有返回值
的部分 是這個 function的名字
是這個 function 傳入的參數
如果我們需要返回值,我們會像 3 一樣 冒號後面加上要返回回的型態
在 4 地方 我們返回我們要返回的返回值
在 {} 中,執行要執行程式碼
fun double(x: Int): Int {
return 2 * x
}
一般 如果 需要返回數值,我們需要在()後加上:型別
並在 {} 返回特定型別的數值
fun addNumbers(n1: Double, n2: Double): Int {
val sumInteger = (n1 + n2) . toInt()
return sumInteger
}
返回的部份,可以改成下面這樣
fun addNumbers(n1: Double, n2: Double): Int = (n1 + n2) . toInt()
這樣寫之後,可以把型別省略,因為我們已經知道這個 function 返回值的型別
fun addNumbers(n1: Double, n2: Double) = (n1 + n2) . toInt()
如果我們並沒有要 function 返回任何型態的值
會是Unit, 下面 result 打印出來會是 kotlin.Unit
fun addNumbers(n1: Double, n2: Double){
val sumInteger = (n1 + n2) . toInt()
}
fun main(args: Array<String>){
val number1 = 1.0
val number2 = 1.0
val result = addNumbers(number1, number2)
println (result)
// kotlin.Unit
}
要調用函數,使用其名稱,後跟調用運算符(())
callMe ()
我們可以在下面時機調用
我們可以設立一個變數,下面並不是真的指向這個 funtion, 意義是 當 function 有返回值時, 這個變數會 指向返回值, 如果無返回值時, 由於函數是 unit, 變數打印出來 會是kotlin.Unit
val para = callMe ()
在另一個 function 調用這個 function
fun callMe() {
}
fun main(args: Array<String>) {
callMe()
}
Function 調用 需要 在另一個 funtion scope 內調用 , 或設立一個變數指向他 , 如果像下面這樣寫在 非 function scope 內 , 會出現錯誤
fun add (){
}
class (){
add ()
//Error : Expecting member declaration
}
在 function 內 我們可以增加一個或一個以上的參數,在{} 中 執行傳入參數的處理, 例如下面 function
我在 function 中 執行 將傳入 a 參數 和 b 參數 相加的動作, 並將 result 指向 相加完的結果
var result = 0
fun addNumbers (n1:Double,n2:Double):Int {
return (n1+n2).toInt()
}
我們會像下面這樣,在另一個地方調用上面 的 function,來執行 function 內的程式碼,此時 result 的結果會是 2
fun main (args: Array<String>){
val number1 = 1.0
val number2 = 1.0
result = addNumbers (number1,number2)
println(result)
}
如果 function 是 class 的成員 , 我們需要 在 實例所屬的 class 後, 像下面這樣調用 ,它的成員 function
val stream = Stream ()
stream.read()
寫程式都會有一個程序執行的起點 , 像 main 函數 , Android 的 lifecycle callback 函數 都是 ,
在主要編譯的函數內寫下執行的程式 , 而其他函數 如果沒有被調用到就不會被執行
下面 sleep () 沒有 被執行到
fun eat (){
println ("I m eating")
}
fun sleep (){
println ("I m sleeping")
}
fun main(args: Array<String>) {
eat ()
}
下面 eat() 被 doSomething()調用 , 而 doSomething () 有在 main 函式中被 調用
所以 eat() 雖然沒有直接在 main 函數中調用 , 但仍有執行到
fun eat (){
println ("I m eating")
}
fun doSomething (){
eat ()
}
fun main(args: Array<String>) {
doSomething ()
}
透過實作,可以更快上手 ( ゚▽゚)/
example 1 : Hello, world!
fun main(args: Array<String>) {
println("Hello, world!")
}
example 2
fun plus (p1:Int,p2:Int):Int{
return p1 + p2
}
fun minus (p1:Int,p2:Int):Int{
return p1 - p2
}
fun main(args: Array<String>) {
val a = 1
val b = 2
val c = minus (a,b)
val d = plus (a, b)
println (c)
println(d)
}
example 3
fun addNumbers(n1: Double, n2: Double): Int {
val sum = n1 + n2
val sumInteger = sum.toInt()
return sumInteger
}
fun main(args: Array<String>) {
val number1 = 12.2
val number2 = 3.4
val result = addNumbers(number1, number2)
println("result = $result")
}