- 倉頡編程快速上手
- 劉玥 張榮超
- 1539字
- 2024-09-05 17:00:22
2.2.2 對可變變量進行賦值
使用關鍵字let聲明的變量是不可變變量,使用關鍵字var聲明的變量是可變變量。
不可變變量指的是初始化后數據不可以發生改變的變量。對于不可變變量,只可以執行一次“存”操作。可變變量指的是初始化數據可以發生改變的變量。對于可變變量,可以執行多次“存”操作。
對于可變變量,可以隨時通過賦值表達式來給變量存入新的變量值。在存入新值之后,舊值就會被新值替換。賦值表達式的語法格式如下:
變量名 = 新值
其中,“=”是賦值操作符,其作用是將“=”右邊的新值賦給左邊的變量。賦值完成后,變量值就被新值替換了。
1.賦值表達式中的新值是字面量
對代碼清單2-1進行修改,將可變變量info的值修改為另一個字符串類型的字面量,如代碼清單2-3所示。
代碼清單2-3 hello_cangjie.cj
01 main() { 02 var info: String = "你好,倉頡!" 03 println(info) // 輸出變量info并換行 04 05 info = "使用賦值表達式對可變變量進行賦值" // 修改info 06 println(info) // 再次輸出info 07 }
編譯并執行程序,輸出結果為:
你好,倉頡! 使用賦值表達式對可變變量進行賦值
如果對已經完成初始化的不可變變量進行賦值,將會引發編譯錯誤。例如,在以上示例程序中,如果在聲明info時使用的是關鍵字let,那么在之后的代碼中就不能再對info進行賦值操作。
2.賦值表達式中的新值是表達式
在倉頡中,表達式是一個寬泛的概念,只要能夠返回一個值,就可以將其稱為表達式(expression)。簡單的表達式是由操作數和操作符構成的,其中操作符是可選的。操作數是參與操作的數據,例如字面量"你好,倉頡!"、變量info。操作符是一種特殊的符號,通過操作符可以對相應數據類型的操作數進行各種操作,例如“+”“()”。
以下是一些簡單表達式的示例:
"你好,倉頡!" // 1個字符串類型字面量(操作數)構成的表達式 3 // 1個整數類型字面量(操作數)構成的表達式 x + 1 // 由2個操作數“x”“1”和1個操作符“+”構成的表達式 println(info) // 操作符“()”表示函數調用 info = "笑口常開" // 賦值表達式
賦值表達式中的新值可以是各種表達式,示例代碼如代碼清單2-4所示。
代碼清單2-4 write_variables.cj
01 main() { 02 var x = 1 03 println(x) 04 05 x = x + 1 // 新值是表達式x + 1 06 println(x) 07 08 x = x * 3 // 新值是表達式x * 3 09 println(x) 10 }
編譯并執行程序,輸出結果為:
1 2 6
在示例程序中,首先聲明了一個初始值為1的可變變量x(第2行代碼)。在第5行代碼中,使用以下賦值表達式對x進行賦值:
x = x + 1
在執行該行代碼時,首先會計算出“=”右邊的表達式的值。由于當前x的值為1,因此計算出表達式x + 1的值為2,再將x + 1的值賦給“=”左邊的x,這樣就將x的值由1修改為2。
同理,在第8行代碼中,使用以下賦值表達式再次修改了x的值:
x = x * 3
在執行該行代碼時,同樣先使用當前x的值計算出表達式x * 3的值為6,再將6賦給x。
3.復合賦值表達式
除了可以使用賦值表達式對可變變量進行賦值,還可以使用復合賦值表達式對可變變量進行賦值。將其他二元操作符,如“+”“-”“*”等,與賦值操作符復合在一起,可以得到復合賦值操作符。對代碼清單2-4稍作修改,得到代碼清單2-5。
代碼清單2-5 write_variables.cj
01 main() { 02 var x = 1 03 println(x) 04 05 x += 1 // 等效于x = x + 1 06 println(x) 07 08 x *= 3 // 等效于x = x * 3 09 println(x) 10 }
以上示例程序的輸出結果和代碼清單2-4的輸出結果是完全一致的。
在示例程序中,使用以下2個復合賦值表達式對可變變量x進行賦值:
x += 1 x *= 3
提示
一元操作符只需要1個操作數,例如,-3中的負號“-”是一元操作符。二元操作符需要2個操作數,例如5 * 3中的乘號“*”是二元操作符。
練習
繼續修改2.2.1節的練習代碼。
1.使用賦值表達式對表示停車位編號、商鋪地址編號和空調開頭狀態的變量重新賦值。
2.使用賦值表達式對表示童鞋價格的變量重新賦值,使童鞋價格在當前價格的基礎上減少19.8元。
3.使用復合賦值表達式對表示童鞋價格的變量重新賦值,使童鞋價格為當前價格的9折(90%)。
- LaTeX Cookbook
- Node.js Design Patterns
- Node.js 10實戰
- Learning Apex Programming
- Learning Selenium Testing Tools with Python
- iOS 9 Game Development Essentials
- 控糖控脂健康餐
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- Big Data Analytics
- Mastering Linux Security and Hardening
- 匯編語言編程基礎:基于LoongArch
- 零基礎看圖學ScratchJr:少兒趣味編程(全彩大字版)
- scikit-learn Cookbook(Second Edition)
- Raspberry Pi Blueprints