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

PUBLISHED ON JAN 10, 2019 — PROGRAMMING

    在上一篇文章中,我们开始试着写一些简单的 Groovy 程序,在这篇文章,我们会介绍变量 (variable);电脑程序很大一部分是在操作各种数据 (data)。在本文中,我们会学到 Groovy 程序如何处理一些基本的数据。

    在撰写程序时,我们会将数据存在变量中,在后续的程序中可调用该变量。在电脑程序中,程序调用的数据会存在内存中,变量会指向数据,但我们平常在写程序时不需了解这些技术细节。我们以一个简单的例子来看变量的使用:

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

    在 Groovy 中,使用 def 声明变量。首先,我们声明一个变量 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
    All code in the website is licensed under Apache 2.0 unless otherwise mentioned.