【在主画面加入捷径】
       
【选择语系】
繁中 简中

[Groovy] 程序设计教学:使用变量 (Variable)

【赞助商连结】

    在上一篇文章中,我们开始试着写一些简单的 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