Kotlin Tutorial(3)Kotlin程式設計基礎 by Michael | CodeData
top

Kotlin Tutorial(3)Kotlin程式設計基礎

分享:
tags: kotlin

Kotlin Tutorial(2)10分鐘認識Kotlin << 前情

程式基本架構與基礎

Kotlin原始程式碼檔案的附加檔案為「kt」,檔案名稱的部份是依照程式用途取的名稱。原始程式碼裡面可以加入註解,例如下面這個全部是註解的程式碼:

/* HelloComment.kt */

/*
    使用「/*」開始與「*/」結束,裡面的內容都是註解
    這種用法通常稱為多行註解
 */

/* HelloComment.kt */

/*
     後面的程式碼都使用上面的註解告訴你程式碼的目錄
     如果前面沒有套件名稱,表示它放在「src」的根目錄
 */

// 使用「//」開始的內容稱為單行註解

// 註解在編譯與執行的時候都會忽略
// 這個程式除註解以外什麼都沒有

一個需要執行一些工作的程式碼,並不需要宣告類別,只需要宣告程式的進入點「main」函式就可以了。剛開始學習Kotlin程式語言,會經常使用顯示訊息的函式。例如下面的程式碼:

/* HelloMainFun.kt */

// Kotlin程式的進入點,只有「args」可以改變為其它自己取的名稱,其它都是固定的
// IntelliJ IDEA偵測到Kotlin程式的進入點,會在左側顯示Kotlin圖示
// main函式的範為從「{」開始,到「}」結束,通常稱為區塊(block)
// 把需要執行的敘述寫在main函式區塊裡面
fun main(args: Array<String>) {
    // 使用Kotlin的println函式顯示左右括號裡面的內容到終端機
    // 現在左右括號裡面是使用雙引號(")包圍的字串(String)
    // 一個敘述的最後面不需要使用分號(;)
    println("main function")

    // println的左右括號裡面沒有東西,執行後只會換行
    println()

    // 如果在同一行寫多個敘述,就要使用分號隔開
    println(1); println(2); println(3)

    // println是顯示並換行,print是只有顯示不換行
    // 如果顯示的訊息是一般的數學運算,就不要使用雙引號
    print("1+1");print(2+2);print(3+3)    
}

執行HelloMainFun.kt以後顯示下面的訊息:

main function

1
2
3
1+146
  • Java老手:
    • Kotlin不一定需要宣告類別
    • 敘述的最後面不需要使用分號(;)

在終端機顯示訊息

Kotlin提供許多函式、類別與其它應用的程式庫,需要在終端機顯示訊息,使用Kotlin內建的println與print函式,兩個的差異在顯示訊息後會不會換行。雖然在終端機顯示訊息的功能,在開發應用程式的時候不太會用到,例如Android App。不過在初學Kotin的階段,可以很方便執行一些測試的工作。

下面的範例程式碼示範在終端機顯示訊息的作法:

/* HelloPrint.kt */

fun main(args: Array<String>) {
    // 顯示字串
    println("String message")

    // 顯示計算結果
    println(35 * 60)

    // 使用+號連接字串與計算結果
    println("I am " + (35 * 12) + " months old.")

    // 上面的工作建議使用下面這種「string template」的作法
    // 在字串裡面使用「${數字、計算或其它資料}」
    // Kotlin依照「${」和「}」之間的內容,執行計算與替換
    println("I am ${35 * 12} months old.")
}
  • 相關內容:
    • String template在後面的內容會繼續說明各種不同的用法
  • Java老手:
    • 不建議在Kotlin使用+號連接字串
    • Kotlin的String template跟Java的String.format()類似,不過更簡單、好用

套件與原始程式碼

剛開始學習Kotlin的時候,寫的程式會表較簡單一些,通常是一個包含main函式的程式碼。不過以後實際開發應用程式專案的時候,通常會有許多程式碼檔案,瞭解套件(package)與匯入(import),為應用程式規劃好目錄,會是比較好的作法。

在建立Kotlin應用程式專案以後,如果需要建立套件,在「src」目錄上按滑鼠右鍵,選擇「New -> Package」:

kt_03_01

在對話框輸入套件名稱,使用句點(.)分開不同的階層目錄,例如「net.macdidi5.basic」,表示建立一個有三層目錄的套件:

kt_03_02

完成後就可以在「src」目錄看到建立好的套件目錄:

kt_03_03

程式碼最好是依照它們的功能,分類放在各自的套件。建立好應用程式專案的套件以後,如果需要在套件下新增程式碼,在套件目錄上(src/net.macdidi5.basic)按滑鼠右鍵,選擇「New -> Kotlin File/Class」,輸入程式碼名稱建立一個新的Kotlin程式,例如「HelloPackage」,IntelliJ IDEA會在建立的程式碼自動加入package的宣告:

kt_03_04

使用其它套件的程式碼

一個應用程式裡面的程式碼,應該要依照規劃放在各自的套件目錄裡面,例如下面的程式碼:

/* net.macdidi5.other.HelloOther.kt */

// 套件的宣告與程式碼檔案目錄都一樣
// 這是比較建議的作法
package net.macdidi5.other

// 一個計算平均的函式
fun average(vararg nums: Int): Int {
    var total: Int = 0

    for (n in nums) {
        total += n
    }

    return total / nums.size
}

如果沒有什麼特殊的原因(例如偷懶),就不建議使用下面程式碼的作法:

/* Hello.kt */

// 雖然這個程式檔放在應用程式專案的根目錄
// 不過它使用package加入套件的宣告
// 在程式碼裡面宣告的內容,也是屬於net.macdidi5.root套件
package net.macdidi5.root

// 一個加總整數的函式
fun summary(vararg nums: Int): Int {
    var total: Int = 0

    for (n in nums) {
        total += n
    }

    return total
}

程式碼在使用package宣告套件以後,不管有沒有放在套件目錄下,程式碼裡面寫的內容就屬於宣告的套件。如果需要使用其它套件的內容,例如呼叫函式,就必須使用包含套件的完整名稱:

/* net.macdidi5.basic.HelloPackage.kt */

package net.macdidi5.basic

fun main(args: Array<String>) {
    // 呼叫在其它套件的函式,必須在函式名稱前面加上套件名稱
    val t = net.macdidi5.root.summary(3, 5, 7)
    println("Total: $t")

    val a = net.macdidi5.other.average(3, 5, 7)
    println("Average: $a")
}

上面的作法會讓程式碼變得比較多一些,所以需要使用其它套件的內容,建議使用「import」敘述:

/* net.macdidi5.basic.HelloPackage02.kt */

package net.macdidi5.basic

// 使用import設定在某個套件的函式
import net.macdidi5.other.average
import net.macdidi5.root.summary

fun main(args: Array<String>) {
    // 呼叫的時候就可以省略函式名稱前面的套件名稱
    val t = summary(3, 5, 7)
    println("Total: $t")

    val a = average(3, 5, 7)
    println("Average: $a")
}

比較上面兩個範例,使用「import」敘述的程式碼看起來簡單多了。import敘述有下面兩種語法:

  • import 套件名稱.內容

    宣告在程式碼中會使用某個套件裡面的某個內容,例如函式或類別,所有在其它套件使用的內容都必須加入import

  • import 套件名稱.*

    如果使用到某個套件裡面的多個內容,使用這種語法可以省略同套件的多個import敘述

排除程式碼的錯誤

使用開發工具撰寫Kotlin程式碼的時候(例如IntelliJ IDEA),如果不小心打錯了,開發工具的提示通常會很明顯。例如下面這個錯誤的範例程式碼畫面:

kt_03_05

程式碼錯誤的地方,會變成紅色的字體,左側的專案目錄,也會使用紅色的底線標示錯誤的程式碼檔案,還有包含錯誤程式碼檔案的套件。你可以把滑鼠游標移到程式碼錯誤的地方,IntelliJ IDEA就會顯示錯誤的提示:

kt_03_06

上面的錯誤訊息顯示「Unresolved reference: Print」,因為Kotlin程式設計語言是區分大小寫的,所以Kotlin告訴你沒有這樣的函式可以使用。

這個錯誤的範例程式碼的另一個問題,是少打了右刮號,滑鼠游標移到錯誤的地方後,會顯示下面的畫面:

kt_03_07

上面的錯誤訊息顯示「Expecting ')'」,這類的錯誤會提示你缺少的部份,例如這個範例放在單引號裡面的右刮號。

如果你沒有發現錯誤,執行有錯誤的程式碼,IntelliJ IDEA會在訊息區塊顯示所有的錯誤,使用滑鼠選擇錯誤訊息後,游標會移到動到發生錯誤的地方:

kt_03_08

訊息區塊使用下面個格式顯示錯誤:

Error:(錯誤行號, 錯誤位置) Kotlin: 錯誤訊息

下一步

瞭解Kotlin程式設計基礎,還有認識如何在終端機顯示訊息後,接下來準備認識基本的資料型態與變數,它幾乎是所有程式設計語言共同的基礎,所以當然很重要。

相關的檔案都可以在GitHub瀏覽與下載。

https://github.com/macdidi5/Kotlin-Tutorial

後續 >> Kotlin Tutorial(4)基本型態與變數

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言