iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
1

本篇文章大概會討論到下列幾個主軸

  • Function 的 語法 , 如何去定義它?

  • Function 參數和返回值的運作

  • Function 的作用是什麼? 如何運用Function

Function 的 語法 , 如何去定義它?

下面例子是個基本 function 有參數,有返回值

  1. 的部分 是這個 function的名字

  2. 是這個 function 傳入的參數

  3. 如果我們需要返回值,我們會像 3 一樣 冒號後面加上要返回回的型態

  4. 在 4 地方 我們返回我們要返回的返回值

  5. 在 {} 中,執行要執行程式碼


fun double(x: Int): Int {

    return 2 * x
}

Function 的返回

一般 如果 需要返回數值,我們需要在()後加上:型別
並在 {} 返回特定型別的數值


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
    
}

Function 的調用

要調用函數,使用其名稱,後跟調用運算符(())


callMe ()

我們可以在下面時機調用

  1. 取得 function 返回值

我們可以設立一個變數,下面並不是真的指向這個 funtion, 意義是 當 function 有返回值時, 這個變數會 指向返回值, 如果無返回值時, 由於函數是 unit, 變數打印出來 會是kotlin.Unit


val para = callMe ()

  1. 在另一函數中調用

在另一個 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

我在 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()


了解 fun main , 為什麼 IDE 都要把要執行的程式內容寫在 main 函數 ?

寫程式都會有一個程序執行的起點 , 像 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")
}


上一篇
[Day 2 上]
下一篇
[Day 3 ] Thread
系列文
Android 菜鳥村-開發基礎 30篇32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言