万恶起源——为程序元素命名
ℹ️NOTE
对于熟悉其他编程语言的读者或者不在意较多细节内容的读者,可以跳过本节内容或者直接总结查看部分
1.1 一些 Unicode 字符集概念
在Cangjie文档中,关于Unicode字符集的描述如下:
- 在 Unicode 标准中XID_Start 和 XID_Continue 属性用于标记可以作为 Unicode 标识符(Identifier)的起始字符和后续字符(参考定义:Unicode标准文档)
- XID_Start 包含中文和英文等字符,XID_Continue 包含中文、英文和阿拉伯数字等字符
- 仓颉语言使用 Unicode 标准 15.0.0
- Cangjie会将所有标识符识别为 Normalization Form C (NFC) 后的形式。两个标识符如果在 NFC 后相等,则被认为是相同的标识符。
1.2 Cangjie的标识符分类
- 普通标识符
- 原始标识符
对于普通标识符而言:
⚠️WARNING
不可以与Cangjie的**关键词**相同
例如:
main 、 for 、 while 、 spawn等等
例如:
main 、 for 、 while 、 spawn等等
普通标识符同样含有以下限制:
- 使用中文、字母开头等XID_Start的字符开头时,后面可接任意长度的XID_Continue字符
- 使用_作为开头时候,其后接至少一位的XID_Continue字符
如下示例:
Cangjie
//以下为合法合理的标识符
hello
test
Demo
_abc_
仓颉
a1b1c1
//以下为非法标识符
ab&c // & 不是 XID_Continue 字符
3abc // 阿拉伯数字不是 XID_Start 字符,因此,数字不能作为起始字符
_ // _ 后至少需要有一个 XID_Continue 字符
while // while 是仓颉关键字,普通标识符不能使用仓颉关键字
对于原始标识符而言:
ℹ️NOTE
原始标识符主要用于某些场景下需要使用Cangjie关键词作为标识符
其使用方式即在 普通标识符 或者 Cangjie关键词 的外围加上一对反引号
其使用方式即在 普通标识符 或者 Cangjie关键词 的外围加上一对反引号
如下示例
Cangjie
//以下为合法合理的原始标识符
`abc`
`_abc`
`a1b2c3`
`if`
`while`
//以下为非法的原始标识符
//其原因在于,内部 普通标识符 也是非法的
`ab&c`
`3abc`
Cangjie
main(){
let a = 1
a |> println
test()
}
func test(){
}
1.3总结
在Cangjie编程语言中,标识符分为以下两类
- 普通标识符
- 原始标识符
普通标识符 可以由 汉字、英文字母 等合理的XID_Start字符开头,也可使用_作为开头(不可使用数字作为开头)。使用非_开头时其后可接任意长度的XID_Continue字符,使用_开头时其后必须接至少一位的XID_Continue字符(可以是_,也可以是数字)。整体标识符不应出现如&的符号以及Cangjie注册的关键词。
原始标识符是使用一对 反引号 标识的 普通标识符 和 Cangjie的关键词,其主要用在某些场景下需要使用Cangjie关键词作为标识符。
