10. 常量,固定不变的数据 | 奶茶店定招牌

常量是程序中一块有名字的内存空间,用来存储程序运行过程中不会变化的数据。奶茶店的招牌做好之后就挂在门口。顾客换饮品、改杯型,招牌还是那一块。

动画视频在《10. 【ArkTS】常量,固定不变的数据 | 奶茶店定招牌》。

声明常量的语法格式

ArkTS 声明常量写成:

复制代码
const 常量名: 数据类型 = 初始值;

const 是关键字,专门用来声明不可变常量。

常量名自己起,单词全部大写,单词之间用下划线分开,尽量把意思写完整。MAX_COUNT、DEFAULT_USER_AGE 就是这种写法。招牌写成 SHOP_SIGN。

写名字时可以先打小写 shop_sign,选中这几个字母,按下 Ctrl + Shift + U,一次转成大写。再按一次,又回到小写。

数据类型这里用字符串 string。数值 number、自定义类等以后的课程再讲。等号右边是初始值,也就是声明时放进去的那个数据。常量是只读的,只允许赋值一次,声明之后不能再改。

招牌按这个格式声明:

复制代码
// 奶茶店招牌
// 讲课时:输入 shop_sign,接着按下快捷键
const SHOP_SIGN: string = '甜蜜奶茶屋';

SHOP_SIGN 里是甜蜜奶茶屋。字符串写在引号里。

改招牌会报错

招牌一旦制作完成,就不能随意改动。下面这一行如果去掉注释,程序会直接报错:

复制代码
// SHOP_SIGN = '快乐奶茶铺';

这一行留在注释里,用来对照声明之后的再次赋值。店名仍是甜蜜奶茶屋。

订单仍然用变量

沿用点奶茶的例子。杯型、饮品和价格还会变,继续用 let。顾客把珍珠奶茶换成椰果奶茶,价格从 15 改成 16。杯型还是大杯。招牌不参与这次修改。

复制代码
// 杯型
let cupSize: string = '大杯';
// 奶茶名称
let drinkName: string = '珍珠奶茶';
// 价格(单位:元)
let price: number = 15;

// 顾客更换饮品
drinkName = '椰果奶茶';
price = 16;

drinkName 里的珍珠奶茶被换成椰果奶茶,price 从 15 变成 16。cupSize 没有再次赋值,仍然是大杯。SHOP_SIGN 没有再次赋值,仍然是甜蜜奶茶屋。

打印店铺招牌和订单

用 console.log 把招牌和这一单打出来。加号把文字和变量接在一起:

复制代码
console.log('店铺招牌:' + SHOP_SIGN);
console.log('您点的是:' + cupSize + drinkName);
console.log('价格:' + price + ' 元');

输出三行:店铺招牌:甜蜜奶茶屋,您点的是:大杯椰果奶茶,以及 价格:16 元。杯型和饮品中间没有空格,所以连在一起。

先开启预览器,再打开日志面板,按 Ctrl + S 保存,才能看到这三行。预览器没开,日志里不会有输出。

按顺序写在一起

声明常量、声明变量、更换饮品和打印接在一起,就是这一单的完整代码。

复制代码
/*------------------------------
声明常量的语法格式:
const 常量名: 数据类型 = 初始值;
-------------------------------*/

// 奶茶店招牌
// 讲课时:输入 shop_sign,接着按下快捷键
const SHOP_SIGN: string = '甜蜜奶茶屋';
// SHOP_SIGN = '快乐奶茶铺';

// 杯型
let cupSize: string = '大杯';
// 奶茶名称
let drinkName: string = '珍珠奶茶';
// 价格(单位:元)
let price: number = 15;

// 顾客更换饮品
drinkName = '椰果奶茶';
price = 16;

// 打印订单信息
console.log('店铺招牌:' + SHOP_SIGN);
console.log('您点的是:' + cupSize + drinkName);
console.log('价格:' + price + ' 元');

三个变量的名字没有换。换掉的是饮品和价格,杯型仍是大杯。招牌从声明到打印都是甜蜜奶茶屋,改名那一行停在注释里。常量存放的是运行过程中不再改的数据。

学会变量和常量只是起点,下节课详解标识符与关键字,规避 ArkTS 命名陷阱。