dart 学习 之 级联

级联

要对同一对象执行一系列操作,请使用级联(...)。我们都看到过这样的表达式:

复制代码
myObject.someMethod()
它在 myObject 上调用 someMethod 方法,而表达式的结果是 someMethod 的返回值。

下面是一个使用级连语法的相同表达式:

复制代码
myObject..someMethod()

虽然它仍然在 myObject 上调用了 someMethod,但表达式的结果却不是该方法返回值,而是是 myObject 对象的引用!使用级联,你可以将需要单独操作的语句链接在一起。例如,下方的代码使用了空判断调用符 (?.) 在 button 不为 null 时获取属性:

复制代码
var button = querySelector('#confirm');
button?.text = 'Confirm';
button?.classes.add('important');
button?.onClick.listen((e) => window.alert('Confirmed!'));
button?.scrollIntoView();

现在你可以在第一个级联位置,使用 空判断 级联操作符 (?..),它可以确保级联操作均在实例不为 null 时执行。使用空判断级联后,你也不再需要 button 变量了:

复制代码
querySelector('#confirm')
  ?..text = 'Confirm'
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'))
  ..scrollIntoView();

Q:使用级联创建一个语句,分别将 BigObject 的 anInt 属性设为 1、aString 属性设为 String!、aList 属性设置为 [3.0] 然后调用 allDone()。

复制代码
class BigObject {
  int anInt = 0;
  String aString = '';
  List<double> aList = [];
  bool _done = false;
  
  void allDone() {
    _done = true;
  }
}

BigObject fillBigObject(BigObject obj) {
  // Create a single statement that will update and return obj:
  return TODO('obj..');
}

A:

复制代码
class BigObject {
int anInt = 0;
String aString = '';
List<double> aList = [];
bool _done = false;

void allDone() {
  _done = true;
}
}

BigObject fillBigObject(BigObject obj) {
return obj
  ..anInt = 1
  ..aString = 'String!'
  ..aList.add(3)
  ..allDone();
}
相关推荐
英俊潇洒美少年2 分钟前
前端 Jest 单元测试零基础实战:模板、提效、避坑、面试题(Vue 项目可用)
前端·vue.js·单元测试
和blue一起变得更好5 分钟前
周三:Vue3高级组件特性
前端·javascript·vue.js
魔法阵维护师7 分钟前
从零开发游戏需要学习的c#模块,第二十七章(远程攻击 —— 发射子弹)
学习·游戏·c#
happyprince8 分钟前
10-Hugging Face Transformers 量化系统深度分析
java·前端·数据库
AskHarries9 分钟前
如何使用 OpenClaw Skill
前端
一口吃俩胖子9 分钟前
【脉宽调制DCDC功率变换学习笔记022】DCDC变换器的稳定性、奈奎斯特准则、增益裕度和相位裕度
笔记·学习
weixin_4280053013 分钟前
C#调用 AI学习从0开始-第1阶段(基础与工具)-第7天多轮对话记忆
人工智能·学习·c#·多轮对话·千问api调用
AI周红伟21 分钟前
Agent Skills生产级Skills 案例实操-周红伟
前端·chrome·react.js·langchain
oddsand126 分钟前
AI应用开发学习步骤-java
java·人工智能·学习
知识分享小能手26 分钟前
Flask入门学习教程,从入门到精通,Flask智能租房——列表页 知识点详解(7)
python·学习·flask