系统化掌握Dart编程之标识符与关键字

259 阅读3分钟

image.png

前言

标识符用于命名变量函数和其他编程元素Dart的标识符遵循特定的规则约定,以确保代码的可读性一致性

关键字用于定义语法结构控制流程声明类型等。

千曲而后晓声,观千剑而后识器。虐它千百遍方能通晓其真意

一、标识符

1.1、命名规则

1.1.1、字母或下划线开头

  • 标识符必须以字母a-z A-Z)或下划线(_开头

1.1.2、后续字符

  • 后续字符可以是字母数字0-9)或下划线

1.1.3、区分大小写

  • nameName 是两个不同的标识符。

1.1.4、不能使用关键字

  • 标识符不能Dart的保留关键字相同。

示例代码

// 合法的标识符
int myVariable = 42;
String _privateVariable = "This is private";
void calculateSum() {}
class MyClass {}
enum Color { red, green, blue }
// 非法的标识符
int 1variable = 42; // 不能以数字开头
int class = 42;     // 'class' 是关键字
int @symbol = 42;   // '@' 不是合法字

1.2、命名约定

虽然Dart没有强制性的命名约定,但遵循社区推荐的命名约定可以使代码更易读和维护。

1.2.1、驼峰命名法(Camel Case)

  • 变量和方法:首字母小写,后续单词首字母大写。
int myVariable = 42;
void calculateSum() {}

1.2.2、帕斯卡命名法(Pascal Case)

  • 枚举类型别名:每个单词首字母大写。
class MyClass {}
enum Color { Red, Green, Blue }

1.2.3、全小写加下划线

  • 常量全局变量:全部小写字母,单词之间用下划线连接。
const int max_value = 100;
final String app_name = "My App";

1.2.4、私有成员

  • 下划线开头:表示该成员是私有的,仅在定义它的库中可见。
int _privateVariable = 42;
void _privateMethod() {}

1.2.5、特殊标识符

  • 下划线(_):单个下划线 _ 可以用作占位符,表示不需要使用的变量或参数。
void ignoreValue(_) {
  // 忽略传入的值
}
// 调用时忽略返回值
ignoreValue(42);

1.2.6、内置标识符

Dart 有一些内置的标识符,它们具有特殊的含义或用途:

  • this:引用当前实例。
  • super:引用父类实例。
  • new:创建对象实例(Dart 2.0 之后可选)。
  • null:表示空值。
  • truefalse:布尔常量。

示例代码

// 使用不同的命名约定
int myVariable = 42;
String _privateVariable = "This is private";
void calculateSum(int a, int b) => print(a + b);

class MyClass {
  String name;

  MyClass(this.name);

  void sayHello() {
    print("Hello, my name is $name.");
  }

  // 私有方法
  void _privateMethod() {
    print("This is a private method.");
  }
}

// 常量和全局变量
const int MAX_VALUE = 100;
final String APP_NAME = "My App";

// 枚举
enum Color { Red, Green, Blue }

void main() {
  MyClass myObject = MyClass("Alice");
  myObject.sayHello();

  // 使用枚举
  Color favoriteColor = Color.Red;
  print(favoriteColor);

  // 忽略值
  ignoreValue(42);
}

void ignoreValue(_) {
  // 忽略传入的值
}

二、关键字

2.1、基本类型关键字

用于定义基本的数据类型

  • num:数值类型。
  • int:整数类型。
  • double:浮点数类型。
  • String:字符串类型。
  • bool:布尔类型(truefalse)。
  • dynamic:动态类型,表示可以是任何类型。
  • void:无返回值类型。

2.2、变量声明关键字

用于声明变量常量

  • var:声明一个类型推断的变量。
  • final:声明一个只能赋值一次的变量(编译时常量或运行时常量)。
  • const:声明一个编译时常量,其值在编译时确定且不可改变。

2.3、控制流关键字

用于控制程序的执行流程。

  • ifelse:条件语句。
  • switchcase:多分支选择语句。
  • forwhile:循环语句。
  • do:先执行后判断的循环语句。
  • break:跳出当前循环或 switch 语句。
  • ontinue:跳过当前循环的剩余部分,继续下一次循环。
  • return:从函数中返回值并结束函数执行。

2.4、函数和方法关键字

用于定义函数方法匿名函数

  • function:定义函数(通常省略不写)。
  • =>:箭头函数语法,用于单行表达式函数体。
  • asyncawait:用于异步编程。
  • syncasync:用于生成同步和异步流(Stream)。

2.5、类和对象关键字

用于定义接口枚举扩展类

  • class:定义一个类。
  • extends:用于继承父类。
  • implements:实现接口。
  • with:混入(mixin)其他类的功能。
  • enum:定义枚举类型。
  • typedef:定义类型别名。
  • external:声明外部实现的方法或变量。
  • abstract:定义抽象类或方法。
  • factory:定义工厂构造函数。
  • getset:定义属性的 gettersetter 方法。
  • operator:重载操作符。

2.6、异常处理关键字

用于处理程序中的异常。

  • try:尝试执行可能抛出异常的代码块。
  • catch:捕获异常。
  • finally:无论是否抛出异常都会执行的代码块。
  • throw:抛出异常。

2.7、库和导入关键字

用于管理库导入模块

  • library:定义一个库。
  • import:导入其他库或模块。
  • export:导出库中的成员供其他库使用。
  • partpart of:用于分拆大型库为多个文件。

2.8、元数据关键字

用于为声明附加额外信息。

  • @:用于元数据注释,如 @override@deprecated 等。
  • metadata:定义元数据。

2.9、其他关键字

用于特定用途。

  • covariant:用于参数协变,允许子类覆盖父类方法时使用更具体的参数类型。
  • late:延迟初始化变量,在首次访问时才进行初始化。
  • rethrow:重新抛出捕获到的异常。

示例代码

// 基本类型
int age = 30;
double height = 1.75;
String name = "Alice";
bool isStudent = true;

// 变量声明
var message = "Hello, World!";
final pi = 3.14;
const gravity = 9.8;

// 控制流
if (age >= 18) {
  print("Adult");
} else {
  print("Minor");
}

// 函数和方法
void greet(String name) => print("Hello, $name");

// 类和对象
class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void sayHello() {
    print("Hello, my name is $name and I am $age years old.");
  }
}

// 异常处理
try {
  // 可能抛出异常的代码
} catch (e) {
  // 捕获异常
} finally {
  // 总是执行的代码
}

// 库和导入
import 'dart:math';

// 元数据
class Calculator {
  @override
  String toString() => '这是一个计算器';
}

三、总结

理解 Dart标识符规则命名约定对于编写清晰、一致且易于维护的代码至关重要。通过遵循这些规则和约定,可以确保代码的可读性可靠性

通过分类整理 Dart关键字,可以更好地理解每个关键字的作用适用场景。合理使用这些关键字可以编写出更加清晰简洁高效的代码。

码字不易,记得 关注 + 点赞 + 收藏 + 评论