专栏首页三流程序员的挣扎Dart 笔记 4 - 运算符

Dart 笔记 4 - 运算符

算术运算符

运算符

说明

+

加法

-

减法

-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 语法的一部分。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dart 笔记 14 - 其它

    在调用 toString() 之前,StringBuffer 不会生成新的字符串对象。

    七适散人
  • Dart 笔记 10 - 类(3)

    枚举中的每个值都有一个 index 属性,并且提供 getter 方法,它返回声明时值的索引,从 0 开始。

    七适散人
  • Android 透明状态栏(伪沉浸式)

    而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。

    七适散人
  • mapboxGL之风流图

    前面的文章说到了Openlayers4中风场的实现,本文将讲述如何在mapbox GL实现类似的效果。

    lzugis
  • C#3.0新增功能03 隐式类型本地变量

    从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var。 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型...

    张传宁老师
  • C#的DataTable操作方法

    1.将泛型集合类转换成DataTable(表中无数据时使用): public static DataTable NullListToDataTable(IL...

    彭泽0902
  • JDK10的新特性:本地变量类型var

    java以面向对象的特性显著于世并得到了蓬勃的发展。在语言的发展过程中,为了让java语言更加简洁和方便使用,JDK也在不断的进行改进。

    程序那些事
  • Js基础教程之变量及数据类型

    基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

    老雷PHP全栈开发
  • JS知识总结

    var cars=new Array("Saab","Volvo","BMW"):

    阮键
  • 纯粹依靠位操作实现整数加法运算

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券