美文网首页
Dart 笔记 4 - 运算符

Dart 笔记 4 - 运算符

作者: 三流之路 | 来源:发表于2019-01-10 19:08 被阅读0次

算术运算符

运算符 说明
+ 加法
- 减法
-expr 一元减号,也称为否定(与表达式的符号相反)
* 乘法
/ 除法
~/ 取模运算
% 取余运算

自增自减运算符

运算符 说明
++var var = var + 1 (表达式的值是 var + 1)
var++ var = var + 1 (表达式的值是 var)
--var var = var – 1 (表达式的值是 var – 1)
var-- var = var – 1 (表达式的值是 var)

关系运算符

运算符 说明
== 相等
!= 不等
> 大于
< 小于
>= 大于等于
<= 小于等于

类型测试操作符

运算符 说明
as 形态转换
is 如果对象具有指定的类型,则为 True
is! 如果对象具有指定的类型,则为 False
if (emp is Person) {
  // Type check
  emp.firstName = 'Bob';
}

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

赋值操作符

-=/=%=>>=^=+=*=~/=<<=&=|=

仅为空变量赋值使用 ??= 操作符。

var b;
var a = 5;
var value = 2;
// 仅在 b 为空的情况下 b 被赋值 value 否则 b 的值不变
b ??= value; 
print(b); // 2
a ??= value;
print(a); // 5

逻辑运算符

  • !expr 取反
  • || 逻辑或
  • && 逻辑与

位和移位运算

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~expr 按位取反
  • << 左移
  • >> 右移

条件表达式

condition ? expr1 : expr2 如果条件为真,则计算并返回 expr1 的值,否则计算并返回 expr2 的值。

expr1 ?? expr2 如果 expr1 非空,则返回其值,否则,计算并返回 expr2 的值。

级联表示法

级联 .. 允许在同一个对象上创建一个操作序列。除了函数调用之外,还可以访问同一对象上的字段。这通常可以省去创建临时变量的步骤。

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!'));

可以嵌套级联

final addressBook = (AddressBookBuilder()
      ..name = 'jenny'
      ..email = 'jenny@example.com'
      ..phone = (PhoneNumberBuilder()
            ..number = '415-555-0100'
            ..label = 'home')
          .build())
    .build();

在返回实际对象的函数上构造级联要小心。例如,以下代码会出错:

var sb = StringBuffer();
sb.write('foo')
  ..write('bar'); // Error: method 'write' isn't defined for 'void'.

sb.write() 返回结果为 void,所以不能在一个 void 结果上继续构建级联操作。

严格地说,级联的 .. 表示法不是运算符。这只是 Dart 语法的一部分。

相关文章

网友评论

      本文标题:Dart 笔记 4 - 运算符

      本文链接:https://www.haomeiwen.com/subject/knfzrqtx.html