flutter【4】dart语言--操作符

作者: 昵称真难选 | 来源:发表于2019-01-25 16:02 被阅读0次

操作符

详细的各个操作符的作用不再赘述,参考官网-操作符一览表

操作符可以进行覆写,参考Overridable operators

操作结果类型

操作符左右两边的操作对象不一致时,操作结果以左侧操作对象类型为准。

下面介绍一些 dart中比较特殊的操作符。

相等操作符

== 操作符判断两个对象表示的东西是否一样,如果两个对象都是 null 返回true,如果有一个是 null ,返回 false。== 操作符其实就是返回 x.==(y) 的值,可以被覆写。

如果需要严格的对比两个对象,则使用 identical() 方法。

类型检查操作符

  • as:类型转换(也用来作为 library 前缀)
  • is:对象是定义类型则返回 true,当对象是定义类型的子类或者实现类时,也返回 true
  • is!:对象是定义类型则返回 false

as 操作符可以将对象类型判断和使用两个行为进行合并,如下:

//is 方式
if (emp is Person) {
  // Type check
  emp.firstName = 'Bob';
}

//as 方式,注意当 emp 为 null 或者不是 Person类型时,会抛出异常
(emp as Person).firstName = 'Bob';

赋值操作符

一般结构为 po= ,如 ??= 表示当左边变量为 null 时,将右边的值赋给左边变量。

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

条件操作符

  • condition ? expr1 : expr2 :满足条件返回 expre1,否则返回expre2
  • expr1 ?? expr2:expre1 不为 null时返回 expre1,否则返回 expre2
var visibility = isPublic ? 'public' : 'private';

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

级联操作符(..)

使用 .. 操作符可以对同一对象执行一系列操作,能够节省中间步骤和临时变量,让代码更高效。

其实严格来说, .. 级联语法不是一个操作符。 只是一个 Dart 特殊语法。

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..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();

需要注意的是在方法上使用级联操作符很容易出错,例如下面代码就会出错。

// Does not work
var sb = new StringBuffer();
//sb.write() 函数返回一个 void, 无法在 void 上使用级联操作符。
sb.write('foo')..write('bar');

条件成员访问符(?.)

和 . 类似,但是左边的操作对象不能为 null,例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员

相关文章

  • flutter【4】dart语言--操作符

    操作符 详细的各个操作符的作用不再赘述,参考官网-操作符一览表 。 操作符可以进行覆写,参考Overridable...

  • Flutter系列(2)Dart语言基础

    Flutter的开发语言是Dart语言的,这篇文章就说说Dart语言基础 一、Dart 初体验 在flutter项...

  • Dart 基础

    为什么学习dart?谷歌推出了flutter,而flutter是基于dart语言的 dart是函数式编程语言 所有...

  • Dart语言学习第一天

    1.Flutter是基于Dart 语言,使用Flutter框架需要了解Dart语言。 2.Dart官网地址:htt...

  • 【Flutter】Dart基本语法

    Dart编程语言——基本概念及变量类型Dart编程语言——方法Dart编程语言——操作符、流程控制和异常Dart编...

  • Dart基础入门

    Flutter应用是采用Dart语言来编写,在学习Flutter之前,我们有必要先学习一下Dart语言。Dart是...

  • Flutter基础入门(三)Dart快速入门

    前言 Dart是Flutter SDK指定的语言,因此要学习Flutter,Dart是必须掌握的。关于Dart可以...

  • Flutter 代码规范整理

    Dart 语法简介 Flutter是使用Dart语言开发的。Dart语言是基于类的纯面向对象语言。Dart 中的所...

  • Flutter及Dart入门

    目录 Dart语言下的Flutter Flutter Widget Flutter 布局 Flutter 页面 路...

  • 浅谈Dart语言

    前言 Dart是Flutter SDK指定的语言,因此要学习Flutter,Dart是必须掌握的。 2. Dart...

网友评论

    本文标题:flutter【4】dart语言--操作符

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