Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Dart扩展运算符说:“如果它不是空的话,把它放在列表中”

Dart扩展运算符说:“如果它不是空的话,把它放在列表中”
EN

Stack Overflow用户
提问于 2019-08-06 07:39:49
回答 3查看 1.9K关注 0票数 5

是否有Dart扩展操作符和空感知操作符的组合可以做到这一点?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  1, 
  ...twoOrNull() // this will be inserted only if it's null. something else than the ... operator will be here. 
  3, 
]

所以列表要么是[1, 2, 3],要么是[1, 3]。我想twoOrNull()可以返回[2][],但是如果它能够返回2null,那就太好了。

如果不引入变量,这是可能的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-07 00:20:03

有一个空感知的扩展运算符(...?),但是您的twoOrNull()函数必须返回[2]null;spread运算符扩展了在另一个集合文本中可迭代的内容,因此“扩展”int是没有意义的。

还有Dart的集合-if构造,但它需要调用两次twoOrNull()或将结果保存在变量中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  1, 
  if (twoOrNull() != null) twoOrNull(),
  3, 
]

有关扩展和收集-if的更多信息,请参见Dart语言之旅的列表部分

票数 9
EN

Stack Overflow用户

发布于 2019-08-07 03:51:51

没有副作用的单线衬垫:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  1,
  ...[twoOrNull()]..removeWhere((x) => x == null),
  3,
]

这里的想法是从int twoOrNull()映射到[2][]的列表,然后使用...扩展运算符来展开它。

请注意,在本例中有一个twoOrNull()是可以的,但是一旦您开始有更多需要在列表中添加空检查的元素,可读性就会受到影响。在这种情况下,考虑将空检查延迟到将元素添加到列表之后,即

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  1,
  twoOrNull(),
  3,
]..removeWhere((x) => x == null)

这将使代码更加直观和可读性。

编辑:

为了获得列表中最好的可读性,最好有一个twoOrNullList()函数返回[2][]。然后,您可以使用它非常类似于您的建议:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var twoOrNullList() => [twoOrNull()]..removeWhere((x) => x == null)
[
  1,
  ...twoOrNullList(),
  3,
]
票数 2
EN

Stack Overflow用户

发布于 2022-04-07 07:58:13

还有另一个解决办法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Iterable<T> emit<T>(T? p) sync* {
  if (p != null) {
    yield p;
  }
}

[
  1,
  ...emit(twoOrNull()),
  3,
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57379601

复制
相关文章
如果CPU缓存足够大的话,是不是可以把系统装进缓存里?
从事软件开发多年,这是一个非常有意思的话题,理论上是可行的但起码要满足两个条件,有这么容量的缓存其实就是不计代价,其二默认的操作系统可以针对缓存进行移植对接。这种想法只是在适用于理想状态下,真是状态下意义不是很大,毕竟成本因素占比还是非常大。未来科技的发展不排除有这种设想,主要因素还是成本方面的问题,现在配置电脑都会带着ssd硬盘,而且ssd硬盘在诞生之初价格也是高的吓人,随着技术的成熟以及产业链的成熟慢慢,成本逐渐下来了。
程序员互动联盟
2019/07/04
7900
如果CPU缓存足够大的话,是不是可以把系统装进缓存里?
列表的常用操作,这十张图把它说的明明白白!
列表( list)作为Python中最常用的数据类型之一,是一个可增加、删除元素的可变(mutable)容器。
double
2020/05/08
3440
列表的常用操作,这十张图把它说的明明白白!
列表( list)作为Python中最常用的数据类型之一,是一个可增加、删除元素的可变(mutable)容器。
石晓文
2020/05/08
3530
列表的常用操作,这十张图把它说的明明白白!
细胞亚群注释神器SingleR把它的参考数据库放在了celldex包
最近在这个教程下面看到了一下留言,说下载SingleR 的数据库失败。我帮忙看了看, 注意到 Revised: June 14th, 2020的时候SingleR 1.4.1 ,里面使用了下面的代码获取参考数据库:
生信技能树
2021/04/30
4.2K0
咱就是说:盘它!
MySQL 的架构特点使其可以被应用在很多场景中。尽管它并不完美,但足够灵活,从小型的个人网站到大型的企业应用它都可以工作得很好。为了最大限度地使用 MySQL,你需要了解它的设计,以便能够用其所长,避其所短。
why技术
2023/01/08
2630
咱就是说:盘它!
有了它,放大100倍不是梦
②选择好文件以后点击开始,放大的图片大小需要<10M,尺寸需要<3000×3000PX。
课代表
2018/08/01
3270
有了它,放大100倍不是梦
js不好学并不是因为它难,而是因为它容易混淆
这段时间我主讲的前端零基础课,让我感觉js这东西是越来越简单了。你当然可以说我这是越讲课越熟。确实是有这部分因素,但更主要的是,我发现js中虽然有许多的概念各不相同,但在具体的代码实现中,基本都是非常类似,甚至是完全一样的。这就导致前端新人在学习的过程中,学着学着,就分不清谁是谁了。 例如在27号的课程中,主要讲js的自定义对象。在课程中提到了,函数,方法,对象,又加个构造器,,这就已经四个概念了,但使用代码表现出来, function abc(){ console.log('abc') } 全都是一样的
web前端教室
2018/02/06
6870
js不好学并不是因为它难,而是因为它容易混淆
dart系列之:数学什么的就是小意思,看我dart如何玩转它
dart也可以进行数学运算,dart为数学爱好者专门创建了一个dart:math包来处理数学方面的各种操作。dart:math包提供了正弦,余弦,最大值,最小值和随机数等操作。
程序那些事
2021/12/03
4890
dart系列之:数学什么的就是小意思,看我dart如何玩转它
若不是它,云存储根本起不来
近几年,新兴存储架构逐渐布满了市场,给由传统SAN架构占据的市场带来了大量的烟火气。不妨列举一下名词:分布式存储,ServerSAN,云存储,对象存储,超融合,一体机。实际上,这堆名词里,除了对象存储描述的是前端访问协议之外,其它的基本上都是基于分布式存储构建的。
冬瓜哥
2021/03/04
7390
有了它,图片放大100倍不是梦
随时图片识别技术的快速发展,以前很多不能实现的技术都已变成了现实。比如模糊图片变成高清图,小图放大变清晰等等。 今天给大家带来一个在线放大图片的网站,它使用最新人工智能深度学习技术 – 深度卷积神经网
课代表
2018/06/29
1.2K0
SpringBoot最佳实践,它来了,它来了
上篇博文(SpringBoot自动配置原理,你真的懂吗?)我们详细的介绍了SpringBoot是如何完成自动配置功能的,以及具体的原理。SpringBoot的强大,大家也有所了解了,SpringBoot更加强大的地方是提供了很多的Starter,而且覆盖了我们日常开发的方方面面。如果没有领悟使用精髓,下面我们一起来看一下(大佬请绕行):
程序猿小亮
2021/12/07
9750
SpringBoot最佳实践,它来了,它来了
它来了,它带着GitHub App来了!
微软已经宣布新的 GitHub Mobile 应用,适用于 iOS 和 Android,现在已经接受测试的申请。
老九君
2019/11/26
6330
它来了,它带着GitHub App来了!
今天,进程告诉我线程它它它它不想活了
上一篇文章我们解剖了进程和线程的本质,进程和线程的实现方式,这篇文章我们来探讨它们是如何通信的,进程告诉我说线程不想活了,我不管它死活,我只想知道我是谁?进程是怎么告诉我的?进程的出现和线程的死亡和我有必然联系吗?文章为你揭露哟上一篇文章我们解剖了进程和线程的本质,进程和线程的实现方式,这篇文章我们来探讨它们是如何通信的,进程告诉我说线程不想活了,我不管它死活,我是谁?进程是怎么告诉我的?进程的出现和线程的死亡和我有必然联系吗?文章为你揭露哟...
cxuan
2020/02/26
5280
今天,进程告诉我线程它它它它不想活了
编程语言很流行,并不是因为它很优秀,而是因为它很简单
---- title: 编程语言很流行,并不是因为它很优秀,而是因为它很简单 tags: 编程语言 流行 深度 Node.js Python categories: 编程 ---- 作为一个程序员
zhaoolee
2021/04/01
3730
如果黑洞上了云,8102年我们就能见到它
要说2019年首个全球瞩目的新晋头牌网红,非下面这颗妖娆多姿风头无两的“甜甜圈”莫属了。 黑洞人生首张写真可谓来之不易。选中成像的这颗黑洞是M87星系中心的黑洞,它的质量是太阳的65亿倍,距离地球5500万光年。科学家使用位于四大洲的8台亚毫米射电望远镜同时对黑洞展开观测,北至西班牙,南至南极,连接起来相当于一台和地球大小相当的望远镜。 事实上,亚毫米波段和我们非常熟悉的可见光有着天壤之别。这个波段我们是无法直接看到的,所以,利用亚毫米波段给黑洞拍照,其实就是得到黑洞周围辐射的空间分布图。
腾讯云数据库 TencentDB
2019/05/16
8060
如果黑洞上了云,8102年我们就能见到它
​让人工智能融入课堂,而不是取代它
教育部在2018年对外印发了《教育信息化2.0 行动计划》,该计划指出“新时代赋予了教育信息化新的使命,也必然带动教育信息化从1.0 时代进入2.0 时代”。 在这之后,中国教育的减负增效、全面均衡,教育智能化变革大幕徐徐开启。
IT创事记
2022/06/17
4650
​让人工智能融入课堂,而不是取代它
Dart 2.7 发布: 更安全、更具表现力的 Dart
上周,我们发布了 Dart 2.7 SDK 的稳定版本,它可以为开发者提供多项新功能。Dart 语言经过了充实的一年,它是一种针对客户端优化的语言,适用于在任何平台上开发高效运行的应用。我们今年发布了 6 个新版本,数十项新功能。我们很欣喜地看到这些功能已经被 Dart 社区广泛使用。最近的 GitHub Octoverse 显示,根据多个参与方的评估结果,Dart 被认定为增长速度最快的编程语言 (排名第一),这一消息让我们备受鼓舞。
Piper蛋窝
2020/12/14
1.1K0
Dart 2.7 发布: 更安全、更具表现力的 Dart
php自动识别背景并且把它改为白色
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
仙士可
2019/12/19
6640
PyMol-把它当作一个包来使
来,先看原网攻略:https://pymolwiki.org/index.php/Jupyter
DrugScience
2021/03/16
5760
它来了它来了!您点播的MeterSphere来了!
MeterSphere 是一站式的开源企业级持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,兼容 JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。
TestOps
2022/04/07
2860
它来了它来了!您点播的MeterSphere来了!

相似问题

它说返回类型'int‘不是’空‘

213

如果验证代码不是来自请求,我应该把它放在哪里?

110

Elasticsearch:轮胎-如果字段丢失了,把它放在最后

14

Kotlin,如果不是空的话

20

SQL如果不是空的话

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文