[Combine 开发] 寻找值

first()

first() 操作符用于获取发布者的第一个元素。它返回一个新的发布者,该发布者只发出第一个元素,然后完成

基本用法:

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.first().sink { value inprint("First value: \(value)")}// 结果: First value: 1

 在这个例子中,first() 用于获取数组 numbers 的第一个元素,并输出 "First value: 1"

last()

last() 操作符用于获取发布者的最后一个元素。它返回一个新的发布者,该发布者只发出最后一个元素,然后完成

基本用法:

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.last().sink { value inprint("First value: \(value)")}// 结果: First value: 5

在这个例子中,last() 用于获取数组 numbers 的最后一个元素,并输出 "Last value: 5"

min()

min() 操作符用于查找序列中的最小值。

基本用法:

let numbers = [5, 3, 8, 2, 7]let cancellable = numbers.publisher.min().sink { minValue inprint("Minimum value: \(minValue ?? 0)")}// 结果: Minimum value: 2

在这个例子中,min() 操作符用于找到数组 numbers 中的最小值,并输出 "Minimum value: 2"

max()

max() 操作符用于查找序列中的最大值。

基本用法:

let numbers = [5, 3, 8, 2, 7]let cancellable = numbers.publisher.max().sink { maxValue inprint("Maximum value: \(maxValue ?? 0)")}// 结果: Maximum value: 8

在这个例子中,max() 操作符用于找到数组 numbers 中的最大值,并输出 "Maximum value: 8"

output(at:)

output(at:) 操作符用于选择序列中的特定位置的元素

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.output(at: 1) // 选择位置为2的元素.sink { value inprint("Selected value at index 1: \(value ?? 0)")}// 结果: Selected value at index 1: 2

这个例子中,output(at: 1) 操作符用于选择数组 numbers 中位置为1的元素,并输出 "Selected value at index 1: 2"

output(in:)

output(in:) 操作符用于选择序列中的某个范围内的元素。

基本用法:

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.output(in: 1...3) // 选择位置在1到3之间的元素.sink { values inprint("Selected values in range 1 to 3: \(values)")}// 结果:  
// Selected values in range 1 to 3: 2
// Selected values in range 1 to 3: 3
// Selected values in range 1 to 3: 4

在这个例子中,output(in: 1...3) 操作符用于选择数组 numbers 中位置在1到3之间的元素,并输出

"Selected values in range 1 to 3: 2"、

"Selected values in range 1 to 3: 3"、

"Selected values in range 1 to 3: 4"

需要注意

如果要用publisher.send来发数据,记得要publisher. send(completion: .finished)

例如 :

let publisher = PassthroughSubject<Int, Never>()let cancellable = publisher
.last()
.sink { value in
print("Last value: \(value)")
}publisher.send(1)
publisher.send(2)
publisher.send(3)
publisher.send(4)
publisher.send(5)
publisher. send(completion: .finished)// 结果: Last value: 5

不结束publisher的订阅,不会输出结果

高级用法

.first()、 .last()有对应的first(where:)last(where:)

例如 .last(where:)

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.last(where: {$0 < 4}).sink { value inprint("First value: \(value)")}// 结果:First value: 3

感觉和filter好像

let numbers = [1, 2, 3, 4, 5]let cancellable = numbers.publisher.filter({  $0 < 4 }).last().sink { value inprint("First value: \(value)")}// 结果:First value: 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——Java实现栈和队列

一、栈 Stack 1.特点 &#xff08;1&#xff09;栈是一种线性数据结构 &#xff08;2&#xff09;规定只能从栈顶添加元素&#xff0c;从栈顶取出元素 &#xff08;3&#xff09;是一种先进后出的数据结构&#xff08;Last First Out&#xff09;LIFO 2.具体实现 Java中可…

leetcode35题:搜索插入位置

文章目录 一、题目描述&#xff1f;二、不同时间复杂度的代码实现以及讲解1.时间复杂度&#xff1a;O(n)2.时间复杂度&#xff1a;O(log n) 一、题目描述&#xff1f; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在…

Zookeeper集群

一、Zookeeper概述 1.1 Zookeeper 定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 1.2 Zookeeper 工作机制 Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日&#xff0c;华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金&#xff08;QDII&#xff09;&#xff08;下称“华夏野村日经ETF”&#xff09;二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示&#xff0c;华夏野村日经ETF二级市场交易价格明显高…

备战2个月,面试被问麻了....

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

为什么静态IP是您批量创建社交媒体和账户管理必备?

“新设备登录请求被拒绝&#xff0c;请使用常用设备登录。”谁没有遇到过远程管理社交或商业账户时登录被拒的情况呢? 更糟糕的情况可能是遇到这样的提示&#xff1a;“您的账号可能被盗用&#xff0c;暂时限制使用。请按要求进行身份验证。” 最坏的结果则可能是因为各种原…

工业RFID读卡器的功能和作用

工业读卡器主要用于识别和读写特定目标的数据&#xff0c;它的种类有很多&#xff0c;有分体的读写器也有一体的读写器&#xff0c;根据不同场景的应用可以选择不同的读写器。 工业RFID读卡器的功能和作用 工业RFID读卡器在工业自动化和物流管理等领域中发挥着重要作用。其主要…

什么是DDoS攻击?

什么是DDoS攻击&#xff1f; 拒绝服务&#xff08;Denial-of-Service&#xff0c;DoS&#xff09;攻击是一种针对某些服务可用性的攻击。 通过耗尽CPU、内存、带宽以及磁盘空间等系统资源&#xff0c;来阻止或削弱对网络、系统或应用程序的授权使用的行为。 如果攻击者采用单一…

动态权限有哪些

定位权限&#xff1a; ACCESS_FINE_LOCATION&#xff1a;精确位置ACCESS_COARSE_LOCATION&#xff1a;大致位置 相机权限&#xff1a; CAMERA&#xff1a;访问摄像头 存储权限&#xff1a; READ_EXTERNAL_STORAGE&#xff1a;读取外部存储WRITE_EXTERNAL_STORAGE&#xff1a;…

springboot集成easypoi

easypoi,主打的功能就是容易,通过简单的配置&#xff0c;就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出 pom导入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

跳跃游戏-算法

题目 给定一个数组nums {1,2,3,4,5}&#xff0c;每个元素nums[i]表示从i这个位置最多可以向前跳跃nums[i]个台阶&#xff0c;求最小需要跳几次就可以调到末尾 思路 反向查找 从末尾开始逐个向前判断最远的起跳位置&#xff0c;接着再以该位置递归的判断 public int jumpT…

SpringCloud Aliba-Seata【上】-从入门到学废【7】

目录 &#x1f9c2;.Seata是什么 &#x1f32d;2.Seata术语表 &#x1f953;3.处理过程 &#x1f9c8;4.下载 &#x1f37f;5.修改相关配置 &#x1f95e;6.启动seata 1.Seata是什么 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能…

【C++修行之道】STL(初识pair、vector)

目录 一、pair 1.1pair的定义和结构 1.2pair的嵌套 1.3pair自带排序规则 1.4代码示例 二、vector 2.1vector的定义和特性 2.2vector的初始化 一维初始化&#xff1a; 2.3vector的常用函数 2.4vector排序去重 排序: 去重&#xff1a; 示例&#xff1a; 一、pair …

宠物空气净化器推荐哪个好?实惠的猫用猫用净化器牌子测评

作为宠物主人&#xff0c;我们深知养宠物的乐趣和责任&#xff0c;但同时也面临着一些挑战&#xff0c;比如宠物掉毛、异味和空气质量等问题。这就是为什么越来越多的家庭选择宠物空气净化器&#xff0c;为我们创造一个清新、健康的室内环境。 无论我们多么爱我们的毛茸茸伙伴…

【Linux 】errno 错误码对照表和宏|error, test ok

错误码对应宏 EPERM 1 /* Operation not permitted*/ ENOENT 2 /* No such file or directory*/ ESRCH 3 /* No such process*/ EINTR 4 /* Interrupted system call*/ EIO 5 /* I/O error*/ ENXIO 6 /* No such…

数据库命令集

数据库必用命令合集1 1、创建数据库 语法格式&#xff1a; CREATE DATABASE 数据库名; 1.1、创建数据库&#xff0c;并指定字符集和校对规则 语法格式&#xff1a; CREATE DATABASE 数据库名 DEFAULT CHAARACTER 字符集 COLLATE 校对规则; 1.2、进入到指定数据库中 语法格式…

STM32(--001) Win10、Win11 上的驱动安装说明

一、USB线插到 CMSIS-DAP 接口上&#xff0c;将自动识别到两个设备 ① CMSIS-DAP&#xff1a;用于烧录代码、在线硬件仿真; 在Keil里烧录&#xff0c;无需通过FlyMCU; ② USB转TTL&#xff1a;用于开发板与电脑间串口通信 &#xff0c;即USART1, TX-PA9、RX-PA10; 接口备注&a…

UDP和TCP代理协议有什么区别?哪个更好

在互联网的世界里&#xff0c;数据传输的方式有很多种&#xff0c;其中 UDP 和 TCP 是两种常见的传输协议。而代理协议则是为了在网络中传输数据时提供安全、稳定和高效的传输环境。那么&#xff0c;UDP 和 TCP 代理协议有什么区别呢&#xff1f;哪个更好呢&#xff1f;接下来&…

web系统服务器监控检查

一、检查操作系统是否存在增减文件&#xff0c;是否有shell被上传 要检查操作系统是否存在增减文件或是否有shell被上传&#xff0c;您可以按照以下步骤进行操作&#xff1a; 文件完整性检查&#xff1a; 使用文件系统的完整性检查工具&#xff0c;例如fsck&#xff08;对于ext…