10天学会flutter DAY4 玩转 dart 中的 运算符

返回对 x 调用 == 方法的结果,参数为 y。(像 == 这样的操作符是对左侧内容进行调用的。详情请查阅 操作符。)

下面的代码给出了每一种关系运算符的示例:


assert(2 == 2);

assert(2 != 3);

assert(3 > 2);

assert(2 < 3);

assert(3 >= 3);

assert(2 <= 3);



3、类型判断运算符


as、is、is! 运算符是在运行时判断对象类型的运算符。

在这里插入图片描述

  • 当且仅当 obj 实现了 T 的接口,obj is T 才是 true。例如 obj is Object 总为 true,因为所有类都是 Object 的子类。

仅当你确定这个对象是该类型的时候,你才可以使用 as 操作符可以把对象转换为特定的类型。例如:


(employee as Person).firstName = 'Bob';



  • 如果你不确定这个对象类型是不是 T,请在转型前使用 is T 检查类型。

if (employee is Person) {

  // Type check

  employee.firstName = 'Bob';

}



4、赋值运算符


  • 可以使用 = 来赋值,同时也可以使用 ??= 来为值为 null 的变量赋值。

// Assign value to a

a = value;

// Assign value to b if b is null; otherwise, b stays the same

b ??= value;



  • 像 += 这样的赋值运算符将算数运算符和赋值运算符组合在了一起。

在这里插入图片描述

5、逻辑运算符


  • 使用逻辑运算符你可以反转或组合布尔表达式。

在这里插入图片描述

下面是使用逻辑表达式的示例:


if (!done && (col == 0 || col == 3)) {

  // ...Do something...

}



6、按位和位移运算符


  • 在 Dart 中,二进制位运算符可以操作二进制的某一位,但仅适用于整数。

在这里插入图片描述

下面是使用按位和移位运算符的示例:


final value = 0x22;

final bitmask = 0x0f;



assert((value & bitmask) == 0x02); // AND

assert((value & ~bitmask) == 0x20); // AND NOT

assert((value | bitmask) == 0x2f); // OR

assert((value ^ bitmask) == 0x2d); // XOR

assert((value << 4) == 0x220); // Shift left

assert((value >> 4) == 0x02); // Shift right

assert((value >>> 4) == 0x02); // Unsigned shift right

assert((-value >> 4) == -0x03); // Shift right

assert((-value >>> 4) > 0); // Unsigned shift right



7、条件表达式


  • Dart 有两个特殊的运算符可以用来替代 if-else 语句:

条件 ? 表达式 1 : 表达式 2

  • 如果条件为 true,执行表达式 1并返回执行结果,否则执行表达式 2 并返回执行结果。

表达式 1 ?? 表达式 2

  • 如果表达式 1 为非 null 则返回其值,否则执行表达式 2 并返回其值。

根据布尔表达式确定赋值时,请考虑使用 ? 和 :


var visibility = isPublic ? 'public' : 'private';



如果赋值是根据判定是否为 null 则考虑使用 ??。


String playerName(String? name) => name ?? 'Guest';



上述示例还可以写成至少下面两种不同的形式,只是不够简洁:


// Slightly longer version uses ?: operator.

String playerName(String? name) => name != null ? name : 'Guest';



// Very long version uses if-else statement.

String playerName(String? name) {

  if (name != null) {

    return name;

  } else {

    return 'Guest';

  }

}



8、联级运算符


  • 级联运算符 (…, ?..) 可以让你在同一个对象上连续调用多个对象的变量或方法。

比如下面的代码:


querySelector('#confirm') // Get an object.

  ?..text = 'Confirm' // Use its members.

  ..classes.add('important')

  ..onClick.listen((e) => window.alert('Confirmed!'));



上面的代码相当于:


var button = querySelector('#confirm');

button?.text = 'Confirm';

button?.classes.add('important');

button?.onClick.listen((e) => window.alert('Confirmed!'));



级联运算符可以嵌套,例如:

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。

腾讯T3架构师学习专题资料

如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!

我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。

[外链图片转存中…(img-w1UGFBtw-1719162435501)]

如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!

我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值