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。
● 商場中央空調的當前開關狀態為“關”。
- Python數據可視化:基于Bokeh的可視化繪圖
- R語言編程指南
- 碼上行動:用ChatGPT學會Python編程
- 微服務從小白到專家:Spring Cloud和Kubernetes實戰
- Unity 2018 Shaders and Effects Cookbook
- MySQL入門很輕松(微課超值版)
- HTML5開發精要與實例詳解
- 響應式Web設計:HTML5和CSS3實戰(第2版)
- Machine Learning for Developers
- Mastering OAuth 2.0
- 青少年Python趣味編程
- Building Clouds with Windows Azure Pack
- 一步一步學Spring Boot:微服務項目實戰(第2版)
- 讓Python遇上Office:從編程入門到自動化辦公實踐
- Android開發進階實戰:拓展與提升