[Groovy] 程式設計教學:使用變數 (Variable)

PUBLISHED ON JAN 10, 2019 — PROGRAMMING
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    在上一篇文章中,我們開始試著寫一些簡單的 Groovy 程式,在這篇文章,我們會介紹變數 (variable)。電腦程式很大一部分是在操作各種資料 (data),而變數是電腦程式用來操作資料的語法特性。在本文中,我們會學到 Groovy 程式如何使用變數。

    在撰寫程式時,我們會將資料以識別字 (identifier) 來命名,在後續的程式中可呼叫該識別字來使用資料。在電腦程式中,程式調用的資料會存在記憶體中,變數相當於指向資料的標籤,但我們平常在寫程式時不需了解這些電腦程式內部運作的技術細節,只要把變數當成一項特性來使用即可。

    我們以一個簡單的例子來看變數的使用:

    // Declare the variable name, assigning a string to it.
    def name = "Michael"
    
    // Call the variable, printing it out.
    println "Hello ${name}"

    def 是 Groovy 的保留字 (keyword),用來宣告變數。首先,我們宣告一個變數 name,這時候 name 就成為程式的識別字。我們在宣告變數的同時指派一個字串 "Michael"name。接著,我們在後續的指令中呼叫此變數,將其印到終端機上。

    由於 Groovy 是動態型別語言,變數的型別可自由改變。見下例:

    // var is an integer
    def var = 100
    
    assert var == 100
    assert var instanceof java.lang.Integer
    
    // var is a string now
    var = "Michael"
    
    assert var == "Michael"
    assert var instanceof java.lang.String

    在這個範例中,一開始變數 var 是整數,其值為 100,後來,var 的型別變為字串,其值為 "Michael"

    在我們的程式中,我們用斷言 (assertion) 代替 println,因為這樣可以在閱讀程式碼時就知道程式的意圖,而且可由電腦程式自動確認程式的狀態正確與否。近年來的程式設計教材有用斷言取代輸出終端機的傾向,我們之後大部分程式碼也會用這種風格。

    在本例中,透過 instanceof 可以得到變數 var 的類別 (class),在此處就是型別 (data type),我們會在後文再介紹資料型別。

    除了使用動態型別,我們也可以在程式中標註型別的資訊。見下例:

    // `var` is an integer
    int var = 100
    
    assert var == 100
    assert var.class == java.lang.Integer

    這時候,變數就有特定的型別,若更動型別會造成程式的錯誤,見下例:

    // `var` is an integer
    int var = 100
    
    assert var == 100
    assert var instanceof java.lang.Integer
    
    // Error!.
    var = "Michael"

    這是因為變數 var 已經綁定特定的型別。在 Groovy,型別標註是選擇性的 (optional),程式設計者可視需求自行決定是否要加入型別。通常,如果想要在程式中限定變數的類型時,就會加上,反之則不加。

    TAGS: GROOVY, JAVA
    你或許對以下產品有興趣:
    © 2014-2019. Michael Chen
    All code in the website is licensed under Apache 2.0 unless otherwise mentioned.