Dart语法快速上手四《Dart2之操作符、循环、条件控制、异常》

本文深入解析Dart语言中独特的操作符用法,包括强转操作符as、类型判断操作符is/is!、空赋值操作符??=、非空判断操作符?.、for in循环、switch case的高级用法、断言、异常处理等,帮助开发者掌握Dart的高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dart绝大多数的操作符和其他语言很相似,先列一张表
image.png
image.png

下面说一些不常见的

  • as 强转操作符
(emp as Person).firstName = 'Bob';
  • is / is! 判断对象类型操作符
if (emp is Person) {
  // Type check
  emp.firstName = 'Bob';
}else if(emp is! Person){
.....
}
  • 空赋值操作符
b ??= value; //当b为空的时候,value的值才会赋值给b
  • ?. 类似于Kotlin的非空判断,a?.b 在a不为空的时候执行a.b

  • for in循环,除了常规的for循环以外,还支持for in 循环

var collection = [0, 1, 2];
for (var x in collection) {
  print(x); // 0 1 2
}
  • Switch case 除了正常的比较也是支持枚举类型的
var command = 'OPEN';
switch (command) {
  case 'OPEN':
    executeOpen();
    // ERROR: Missing break

  case 'CLOSED':
    executeClosed();
    break;
}

还有一种用法是在进入一个case之后根据判断如果true我要执行A case 如果是false我要执行 B case,Dart也提供了支持,利用continue关键字加上自定义的标签来完成

var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    executeClosed();
    continue nowClosed;
  // Continues executing at the nowClosed label.

  nowClosed:
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}
断言

Dart里面支持断言,你必须确保判断是正确的才能通过这个断言,断言在生产环境中不起作用

// Make sure the variable has a non-null value.
assert(text != null);

// Make sure the value is less than 100.
assert(number < 100);

// Make sure this is an https URL.
assert(urlString.startsWith('https'));
异常
  • throw Exception
    void distanceTo(Point other) => throw UnimplementedError();//这是抛出异常的方法

  • catch

try {
  breedMoreLlamas();
} on OutOfLlamasException {
  // A specific exception
  buyMoreLlamas();
} on Exception catch (e) {
  // Anything else that is an exception
  print('Unknown exception: $e');
} catch (e) {
  // No specified type, handles all
  print('Something really unknown: $e');
}

on和catch的区别应该在于是否关心异常的实例

  • 捕获堆栈信息
try {
  // ···
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}

你可以在catch里面多增加一个参数,第一个是异常的实例,第二个则是错误的堆栈信息

  • rethrow
    Dart允许你在捕获异常的同时进行传播,如果你需要这样做,请使用rethrow关键字
void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

By the way .Dart does support “Finally” keyWord too.

### Dart 编程语言快速入门教程 #### 一、环境搭建 为了开始编写 Dart 程序,首先需要安装 Dart SDK。可以通过多种方式来设置开发环境,最简单的方法是从官方网站下载并按照说明完成安装过程[^2]。 #### 二、基本语法 ##### 变量声明与赋值 Dart 支持静态类型系统同时也支持类型推断机制。变量可以使用 `var` 关键字自动推导其类型: ```dart // 显式指定类型的变量 int age = 30; // 使用 var 自动推导类型的变量 var name = "Alice"; ``` ##### 数据类型 常见的内置数据类型有数值 (`num`)、字符串 (`String`) 和布尔值 (`bool`) 等: ```dart double pi = 3.14; String greeting = 'Hello'; bool isTrue = true; ``` ##### 控制结构 条件语句和循环也是编程中的重要组成部分,在 Dart 中同样适用: ```dart if (age >= 18) { print('成年人'); } else { print('未成年人'); } for (int i = 0; i < 5; ++i) { print(i); } ``` ##### 函数定义 函数是一段具有特定功能的代码块,可以用作参数传递给其他函数或作为返回值: ```dart void sayHello(String toWhat) { print('Hello $toWhat!'); } sayHello('World'); // 输出 Hello World! ``` #### 三、示例代码 下面是一个简单的命令行应用程序例子,它会打印一条问候消息到控制台: ```dart void main() { String message = 'Welcome to the world of Dart!'; print(message); } ``` 此程序展示了如何创建一个入口点 `main()` 方法以及怎样利用内建函数 `print()` 来显示文本信息[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值