官术网_书友最值得收藏!

2.1.2 聲明幾個不同類型的變量

聲明變量的語法格式如下:

let|var 變量名[: 數據類型] [= 初始值]

提示

這是本書中出現的第1個語法說明,本書后續出現的所有語法說明都遵循以下約定:

粗體字部分表示關鍵字,它的寫法是固定不變的,如關鍵字“let”“var”;非粗體字部分表示需要根據需求填寫,如“變量名”“數據類型”等。

符號“|”表示多個并列的關鍵字,只能取其中一個,如關鍵字“let”和“var”只能二選一。

由一對方括號“[]”括起來的部分表示是可選的,即該部分不是必須填寫的,如“[: 數據類型]”和“[= 初始值]”。

為了提高程序代碼的可讀性,建議在某些符號(如“:”“,”)后面加上一個空格,在某些操作符(如“=”“+”)的前后各加上一個空格。多多觀察示例程序,可以幫助你很快了解這些編程規范。

倉頡使用關鍵字let或var來聲明變量,其中,let聲明的是不可變變量,var聲明的是可變變量(兩者的區別詳見2.2節)。

1.變量名

在關鍵字之后,就是自定義的變量名。變量名是一種標識符。在程序中,可以通過變量名來訪問變量。

倉頡程序中的變量名、函數名、類型名等,都屬于標識符。標識符命名必須遵循以下命名規則。

一個合法的標識符名稱可以有兩種開頭:一種是以一個英文字母開頭,另一種是以任意數量連續的下畫線(_)加上一個英文字母作為開頭。標識符名稱的開頭后可以是任意長度的英文字母、數字或下畫線。

不可以使用關鍵字作為標識符。

區分大小寫,如info和Info是兩個不同的標識符。

符合命名規則的標識符名稱,被稱為合法標識符;不符合命名規則的標識符名稱,被稱為非法標識符。如果程序中包含非法標識符,將會導致編譯錯誤。

以下是一些合法標識符的示例:

x             // 以英文字母開頭
gate9         // 以英文字母開頭,之后是英文字母和數字
gate_9        // 以英文字母開頭,之后是英文字母、數字和下畫線
gate9_        // 以英文字母開頭,之后是英文字母、數字和下畫線
x1_y1_z1      // 以英文字母開頭,之后是英文字母、數字和下畫線
_x            // 以一個下畫線和英文字母開頭
_x1_y1_z1     // 以一個下畫線和英文字母開頭,之后是數字、下畫線和英文字母等
__x           // 以兩個下畫線和英文字母開頭

以下是一些非法標識符的示例:

9gate  // 以數字開頭
class  // class是關鍵字

除了必須遵循的命名規則,我們還建議在給標識符命名時使用一個或多個有意義的單詞組合,做到“見名知意”。

變量的命名也需要遵循以上規則。另外,對于一般的變量,推薦使用小駝峰命名風格來命名,即如果變量名由多個單詞構成,那么第一個單詞的首字符小寫,后面每個單詞的首字符大寫,其余字符都小寫,中間不使用下畫線。舉例如下:

teacherName    // 教師姓名
ageOfStudent   // 學生年齡
totalScore     // 總分
isScorePassed  // 分數是否通過

2.數據類型

數據類型表示變量存儲的是何種類型的數據。在聲明變量時要確定變量的數據類型,并且變量的數據類型在聲明之后不可以被更改。倉頡本身內置了多種數據類型,并且也支持自定義數據類型。下面介紹4種常用的基本數據類型,先聲明以下4個變量:

main() {
let teacherName: String = "劉玥"
var ageOfStudent: Int64 = 19
var totalScore: Float64
var isScorePassed: Bool
}

接下來,讓我們來逐行解釋一下。

let teacherName: String = "劉玥"

以上代碼聲明了一個String類型的變量teacherName。String類型(也被稱為字符串類型)在前面的示例中已經出現過,用于存儲文本內容。顯然,教師的姓名屬于文本內容,所以將該變量聲明為String類型。

var ageOfStudent: Int64 = 19

以上代碼聲明了一個Int64類型的變量ageOfStudent。Int64類型是眾多整數類型中最常用的一種,用于存儲整數。除非是一些特殊的場景,在一般情況下,學生的年齡應該是整數,所以可以將其聲明為整數類型。

var totalScore: Float64

以上代碼聲明了一個Float64類型的變量totalScore。Float64類型是一種常用的浮點類型,用于存儲具有小數部分的實數。這里我們將表示總分的變量 totalScore 定義為浮點類型,即認為總分是可以帶小數的。當然,如果在程序設定中總分是整數,那么也可以將變量 totalScore定義為整數類型。

var isScorePassed: Bool

最后這行代碼聲明了一個Bool類型(布爾類型)的變量isScorePassed。布爾類型用于表示邏輯中的,只有兩個字面量:true和false。布爾類型在程序中常用于表示兩種互斥的狀態。例如,isScorePassed用于表示分數通過(true)和分數不通過(false)這兩種互斥的狀態。

3.初始值

倉頡要求每個變量在使用前必須完成初始化,否則會引發編譯錯誤。例如,在以下示例代碼中,在聲明變量totalScore時沒有指定初始值,并且之后也沒有對totalScore進行初始化,就直接使用println訪問了totalScore,導致編譯錯誤。

main() {
    var totalScore: Float64
println(totalScore)  // 編譯錯誤:變量totalScore在使用時沒有初始化
}

如果要避免上述錯誤,可以在聲明時給totalScore指定初始值,或者在聲明之后使用賦值表達式對totalScore進行初始化。例如,可以將以上代碼修改為:

main() {
var totalScore: Float64 = 0.0  // 在聲明時對變量進行初始化
    println(totalScore)
}

在一般情況下,倉頡要求在聲明變量時就對變量進行初始化,僅在一些特定的情況下才可以在聲明變量時缺省(省略不寫)初始值。例如,對于局部變量,如上述代碼中的totalScore,倉頡允許在定義時不對該變量進行初始化(此時必須指明數據類型),但是在變量第一次被讀取之前,必須完成初始化工作。可以使用如下的賦值表達式對變量進行初始化:

變量名 = 初始值

其中,“=”是賦值操作符,其作用是將“=”右邊的初始值賦給左邊的變量。

針對上面的示例,如果在聲明之后對totalScore進行初始化,可以將代碼修改為:

main() {
    var totalScore: Float64
totalScore = 0.0  // 使用賦值表達式對變量進行初始化
    println(totalScore)
}

提示

局部變量的概念將在6.3節進行詳細介紹。目前,讀者只需要知道在main中定義的變量都屬于局部變量即可。

練習

在一個商場管理軟件中,有以下4種數據需要存儲,請讀者分別為它們定義對應的變量,注意選擇合適的數據類型,以及簡短的、具有描述性的變量名。

停車場的停車位編號。假定該商場的停車場總共只有一層一個分區,停車位編號范圍為1~1000號。當前車位編號為668號。

兒童用品區的一雙童鞋的價格為99.8元。

某商鋪在商場中的地址編號為1-16A。

商場中央空調的當前開關狀態為“關”。

主站蜘蛛池模板: 芒康县| 新田县| 桐乡市| 乐安县| 金平| 安图县| 墨竹工卡县| 台中市| 增城市| 盖州市| 慈溪市| 长垣县| 榕江县| 孝义市| 建瓯市| 浦北县| 白水县| 外汇| 桦甸市| 三台县| 云南省| 嘉义县| 巴林右旗| 建平县| 辉南县| 沧州市| 南开区| 屯门区| 屏东县| 贞丰县| 张家口市| 桃园市| 灵武市| 普格县| 山东省| 顺平县| 车致| 天水市| 北碚区| 丰台区| 祁东县|