深入理解Dart中标识符与关键字

200 阅读4分钟

屏幕截图 2025-01-07 115645.png

前言

学习之路需深耕细作,切勿轻视任一知识点,因其存在必蕴含深意

  • 标识符,如同我们为事物命名的标签,是程序员在编程时为变量、函数、类等元素赋予的唯一身份。
  • 关键字,如同编程语言的指令集,指挥着程序的运行流程。

标识符

命名规范

1. 唯一性
  • 在同一个作用域内,标识符必须是唯一的,以避免命名冲突。
2. 命名规则
  • 标识符的命名通常遵循一定的规则,如只能包含字母、数字、下划线和美元符号,且不能以数字开头。
3. 大小写敏感
  • 在大多数编程语言中,标识符是大小写敏感的,即myNamemyname被视为两个不同的标识符。

常见命名形式

1. 帕斯卡命名法
  • 定义:每个单词的首字母大写,其余字母小写。
  • 示例MyClassHelloWorldUserName
2. 驼峰命名法
  • 定义:第一个单词的首字母小写,后续单词的首字母大写,其余字母小写。
  • 示例myFunctionuserProfileuserName
3. 下划线命名法
  • 定义:所有单词均使用小写字母,单词之间使用下划线分隔。
  • 示例my_functionuser_profileuser_name

关键字

关键字分类

注意:不建议硬记,实际开发中会熟能生巧

  1. 类定义与继承
关键字描述
abstract定义抽象类
class定义类
extends指定一个类的超类
implements指定一个类实现的接口
mixin定义一个 mixin(在 Dart 2.1 中引入,原表格未列出,但它是类定义的一部分)
  1. 构造函数与工厂方法
关键字描述
const定义编译时常量
factory定义一个工厂构造函数
new创建对象的构造函数(Dart 2.12+ 中可选,但在某些情况下仍然有用)
  1. 类型与变量
关键字描述
as类型转换
covariant指定重写方法可以有更具体的类型
dynamic动态类型(在运行时确定类型)
final定义不可变的变量
var定义一个变量(具有动态类型,但通常用于局部变量以推断类型)
typedef定义一个函数类型别名
void表示没有返回值的函数
  1. 异常处理
关键字描述
try尝试执行一段代码,并捕获可能发生的异常
catch捕获异常
finally无论是否发生异常,都执行的代码块
rethrow重新抛出当前捕获的异常

5.控制流

关键字描述
assert断言表达式(用于调试)
break退出循环
continue跳过循环中的当前迭代
if条件语句
elseif 语句的替代分支
switchswitch 语句
caseswitch 语句中的一个分支
defaultswitch 语句中的默认分支
forfor 循环
whilewhile 循环
dodo-while 循环(Dart 中没有直接的 do-while 语法,但可以通过其他方式模拟)

6.异步编程

关键字描述
async定义一个异步函数或方法
await等待一个异步操作的结果
sync*定义一个同步生成器函数(注意:这实际上不是用于异步编程的关键字,而是用于同步迭代器的,但在此分类中为了完整性而列出,通常与 yield 一起使用在同步上下文中)
async*定义一个异步生成器函数(原表格未列出,但它是异步编程的一部分)
yield生成一个值给调用者(在生成器函数中,无论是同步还是异步)
yield*委托给另一个生成器函数(无论是同步还是异步)

7.其他

关键字描述
assert(已在上面的“控制流”中列出,但也可以视为一种调试或验证机制)
deferred延迟加载库
export导出库中的公共成员(原表格未列出,但它是与库相关的关键字)
external定义一个外部函数或变量
get定义一个 getter 方法
is类型检查运算符
is!类型非检查运算符
library定义一个库
part定义一个库的一部分
set(已弃用的集合字面量关键字,现应使用 {}
super调用超类的方法或访问其属性
this当前对象的引用
with混合多个 mixin 到一个类中
null空值
false布尔值 false
true布尔值 true

总结

在编程里,标识符和关键字非常重要。标识符是你给代码里的元素起的名字,要起得容易懂、好维护,还要遵守一些规则。关键字是编程语言的指令,它们控制程序的运行,像搭建程序的骨架一样。

标识符要独一无二,符合规则,还区分大小写。而关键字是语言自带的,不用背,多用用就熟了。它们一起让程序能跑起来,实现各种功能。