Kotlin手写RxJava变换符

2023-10-27

Kotlin手写RxJava变换符

本文链接,点击这里进入

1、核心点:中转站存储之前的数据
2、三行代码实现RxJava

使用create、map、observer

fun main() {
    // create构造出RxJavaCore存放,lambda执行完的结果
    create{
        "WCH"
    }.map{ // 扩展出map方法,接收原先RxJavaCore的value数据,lambda方法执行完后,构造出RxJavaCore继续保存结果
        this + ":Hello world!"
    }.observer{ // 进行消费
        println(this)
    }
}

自定义操作符

class RxJavaCore<T>(var value:T)
// action()执行完的结果,用RxJavaCore保存起来
inline fun<O> create(action:()->O) : RxJavaCore<O>{
    return RxJavaCore(action())
}
// map
inline fun<I, O> RxJavaCore<I>.map(action: I.() -> O) : RxJavaCore<O>{
    return RxJavaCore(action(value))
}
// 监听者
inline fun<I> RxJavaCore<I>.observer(action:I.() -> Unit){
    action(value)
}

简化版本(一)

class RxJavaCore<T>(var value:T)
inline fun<O> create(action:()->O):RxJavaCore<O> = RxJavaCore(action())
inline fun<I,O> RxJavaCore<I>.map(action: (I) -> O):RxJavaCore<O> = RxJavaCore(action(value))
inline fun<I> RxJavaCore<I>.observer(action:(I) -> Unit) = action(value)

简化版本(二)

1、将Helper转换为Any(泛型) ====> 扩展函数的传递过程

inline fun<R> create(action:()->R):R = action() // 保存到泛型中,R中
inline fun<I,R> I.map(action: (I) -> R):R= action(this) // 给I扩展,自动拿到上一步骤,泛型里面R的数据
inline fun<I> I.observer(action:(I) -> Unit) = action(this)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin手写RxJava变换符 的相关文章

随机推荐

  • jmeter接口测试,获取登录接口的cookie值和实际运用

    一 拿到接口文档的登录接口 进入网页的登录页面 二 打开浏览器的开发者工具按F12 点击登录按钮 三 登录后查看登录接口返回的唯一cookie值 cookie值在响应数据的 data 里 四 为登录请求接口添加 正则表达式提取器 五 填写正
  • 2222222222cesh

    专栏 计算机网络复习之路 好了 复习完了上面两章 第一章概述 第二章物理层 我们接着复习数据链路层 目录 数据链路和帧 2 三个基本问题三个基本问题 封装成帧 透明传输 差错检测 重点 3 点对点协议PPP PPP协议的组成 PPP协议的帧
  • 无法解析插件 org.apache.maven.plugins:maven-resources-plugin:3.0.1

    需要为spring boot starter web指定对应的version版本
  • Http协议常见面试题

    1 Http协议的定义 对器客户端和 服务器端之间数据传输的格式规范 格式简称为 超文本传输协议 2 什么是Http协议无状态协议 怎么解决Http协议无状态协议 1 无状态协议对于事务处理没有记忆能力 缺少状态意味着如果后续处理需要前面的
  • 嵌入式软件硬件比例_嵌入式软件硬件常识

    嵌入式软件开发人员 硬件常识 底层地驱动或内核开发人员通常要跟硬件紧密地配合 协同完成工作 硬件电路地设计很 大程度上决定驱动代码地代码地编写 一个熟练地底层开发人员具备硬件开发知识 本节内容 硬件开发流程 硬件识图 软件控制硬件方法 嵌入
  • 【算法/剑指Offer】在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    Q 在一个排序的链表中 存在重复的结点 请删除该链表中重复的结点 重复的结点不保留 返回链表头指针 例如 链表1 gt 2 gt 3 gt 3 gt 4 gt 4 gt 5 处理后为 1 gt 2 gt 5 struct ListNode
  • 错误处理-VS2019+CUDA10.1 新建项目里没有CUDA选项

    强推这篇文章 VS2017 CUDA9 2 新建项目里没有CUDA选项 佛系随心记 CSDN博客 有几点问题在此注释 1 没有Microsoft Visual Studio文件夹 解决方法 如图所示 2 找不到extension vsixm
  • 单片机查表实验c语言,单片机 查表程序设计实验

    查表程序设计实验 2 4 查表程序设计实验 2 4 1 实验目的 学习查表程序的设计方法 熟悉 51 的指令系统 2 4 2 实验设备 PC 机一台 TD NMC 教学实验系统 或 TD PIT 教学实验系统 TD 51 系统平台 或 TD
  • cab补丁包离线安装命令

    dism online add package packagepath xxxxx xxxxx xxxx xxxx Windows10 0 KB4471329 x64 cab 因为补丁在共享盘 自己替换xxx的内容以及补丁名字
  • this.$router.options.routes

    this router options routes 可以拿到初始化时配置的路由规则 this route 可以拿到当前路由信息 包括路由路径 参数0
  • zookeeper 系列(2) 启动流程

    虽然天天在看源码 但很久没有写博客了 从这周开始写点系列 不写文章 就整些流程图吧
  • Linux部署Seata详细过程记录

    Seata服务搭建 Seata官方文档地址 Seata安装包下载地址 依赖版本说明地址 SpringCloudAlibaba版本对应组件版本说明 详细参考官网文档 当前使用Spring cloud alibaba对应的seata版本为v1
  • 中国需要怎样的智慧城市联盟?中外41家联盟组织大起底

    自2009年 智慧地球 概念的提出 智慧城市 作为支撑该系统性设想的组成部分 正在全球范围内 被多数发达和发展中国家所接受并在城市层面开展实践 开展智慧城市规划建设是数字城市 平安城市 数字化 信息化和物联网等 的升级性目标 为有效保障智慧
  • 1.3.6 手写数字识别之训练调试与优化.md

    文章目录 概述 一 计算模型的分类准确率 二 检查模型训练过程 三 加入校验或测试 四 加入正则化项 4 1 过拟合现象 4 2 导致过拟合原因 4 3 过拟合的成因与防控 4 4 正则化项 五 可视化分析 5 1 使用Matplotlib
  • 2022最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了

    前言 鉴于目前测试就业越来越严峻 内卷也成了测试领域的代名词了 我的一个HR朋友告诉我 由于门槛较低 现在普通测试岗 偏功能 的投递比已经将近100 也就是一个岗位差不多有百分简历投进来 所以现在还想从事软件测试行业的小伙伴们 想要心仪的工
  • qt QTimer 提示 不能在另外一个线程停止

    发送 信号 停止 timer 提示 QObject killTimer Timers cannot be stopped from another threadQObject QObject Timers cannot be stopped
  • Spring之Ioc工作流程

    springIoc容器创建流程 在AbstractApplicationContext refresh 中描述了创建ioc的过程 1 前期准备校验参数等 prepareRefresh 2 创建beanFactory工厂对象 还把配置文件中的
  • sort函数数组排序(c++方法)

    sort函数的调用需要头文件 include 从小到大排 例如 a 50 2 3 5 1 1 想让它按照从小到大的顺序排列 那么就可以这么写 sort a a 5 然后数组就会变成 1 1 2 3 5 具体代码如下 include
  • 小菜鸡刷CTF

    一个小菜鸡的CTF成长史 本人小菜鸡一枚 刚入门CTF 不对 应该是脚刚刚沾上了CTF的边边 就只是在刷攻防世界中的题目 无奈脑子太笨 记性太差 只好将题目整理下来 代码多有借鉴 求勿喷 新手练习 题目一 base64 题目来源 poxlo
  • Kotlin手写RxJava变换符

    Kotlin手写RxJava变换符 本文链接 点击这里进入 1 核心点 中转站存储之前的数据 2 三行代码实现RxJava 使用create map observer fun main create构造出RxJavaCore存放 lambd