首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

与小清新的距离 你只差一个RxKotlin !

Rx响应式编程的系列框架中,很多朋友对RxJava是最熟悉的,其实它还有很多同胞。比如:RxKotin, RxSwift,RxPhp, RxGo, RxNet, RxJS......Rx系列最经典基于观察者模式带给大家直观的编程开发体验,受到很多开发者的青睐。...观察者,可观察者对象,如果细分有Schedulers,Flow对象等,Rx很好理解,就四大模块,观察者和被观察对象,他们产生的操作schdulers调度器, 它们两者产生的action的可操作的Flow...RxKotlin RxKotlin是基于kotlin扩展的rx衍生体,对kotlin无需再普及,这种支持Lambdas语法的简洁姿势,会让代码变得小清新和灵活。可能你已经在java8上体验了一番。...定义的接口干啥东东的呢,实际就是查询一下某个库的最新版本。案列查询以“rxkotin”作为参数,通过将返回的数据获取doc文档,接着就进行输出了Ta的maven库ID和Version.

93810

《Kotlin 反应式编程》使用 RxKotlin 实现一个极简的 http DSL ( Reactive Programming Using Rx Kotlin )《Kotlin 反应式编程》使用

Rx Kotlin ) 我们现在已经基本知道 Kotlin 中 DSL 的样子了。...提示: 更多关于OkHttp 的使用可参考: http://square.github.io/okhttp/ 创建 Kotlin Gradle 项目 我们首先使用 IDEA 创建 Kotlin Gradle...Rx扩展了观察者模式用于支持数据和事件序列。Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步I/O(非阻塞)数据流。 Rx库支持.NET、JavaScript和C++ 。...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。...Kotlin 的扩展函数和高阶函数(Lambda 表达式),为定义Kotlin DSL提供了核心的特性支持。 使用DSL的代码风格,可以让我们的程序更加直观易懂、简洁优雅。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    第10章 使用 Kotlin 创建 DSL第10章 使用 Kotlin 创建 DSL

    例如 Gradle、Anko 等都是我们使用通用编程语言(Java 和 Kotlin)创建的内部DSL。...关于扩展函数和带接收者的函数字面值我们在前面的章节中已经讲过了。...提示: 更多关于OkHttp 的使用可参考: http://square.github.io/okhttp/ 我们首先使用 IDEA 创建 Kotlin Gradle 项目 ?...Rx扩展了观察者模式用于支持数据和事件序列。Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步I/O(非阻塞)数据流。 Rx库支持.NET、JavaScript和C++ 。...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。

    1.3K20

    《Kotin 极简教程》第14章 使用 Kotlin DSL第14章 使用 Kotlin DSL《Kotlin极简教程》正式上架:

    例如 Gradle、Anko 等都是我们使用通用编程语言(Java 和 Kotlin)创建的内部DSL。...提示: 更多关于OkHttp 的使用可参考: http://square.github.io/okhttp/ 创建 Kotlin Gradle 项目 我们首先使用 IDEA 创建 Kotlin Gradle...Rx扩展了观察者模式用于支持数据和事件序列。Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步I/O(非阻塞)数据流。 Rx库支持.NET、JavaScript和C++ 。...一个语言列表如下所示: Rx 支持的编程语言 项目主页 Java RxJava : https://github.com/ReactiveX/RxJava JavaScript RxJS:https:/...这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者,在未来某个时刻响应 sender 的通知,而不需要阻塞等待 sender 发射数据。这个很像协程中的通道编程模型。

    2.1K10

    【译】LiveData三连

    这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何解决这些问题,pls enjoy it。...、可测试和可维护的应用程序。...在我们的例子中,视图模型从UserRepository类中获得其返回值,该类保留了一个LiveData的实例,该实例包裹着一个数据持有者FollowStatus。...因此,处理这种需求的最好方法是不使用LiveData作为生产者,而是使用RX类型或Kotlin,因为Kotlin支持多种高阶函数以及对Collections和Sequence的扩展。...你可以使用RX或Kotlin的coroutines对操作者和线程控制进行更有力的控制。LiveData并不能对你的线程管理提供完全的控制权。

    1.7K20

    反应式编程详解

    1.2 定义 反应式编程又叫响应式编程,在维基百科中,其属于声明式编程,数据流。...下面这条线是变换的结果,也就是输出,同样各种颜色的块块是要观察的结果的项,xx表示异常中断。 2.2 第一次体验Rx 需求如下: 从输入框获取输入,从第 10 次输入开始取前5次的输入,打印出来。...RxPy实战 实战包括以下内容: 读取QQ号码包并去重统计 从网络地址中获取数据 从数据库获取数据 文章信息关联作者名称 多线程获取网络地址中的股票数据并统计记录数 3.1 读取文件内容并统计行数...比如我们这里需要有多个观察者订阅的时候。 3.2 从网络地址中获取数据 需求描述: 获取新浪的美股接口数据,并打印出股票名和价格 代码如下: ?...3.3 从数据库获取数据 需求描述: 从MySQL数据库中读取用户信息并打印出来 代码如下: ? 3.4 文章信息关联作者名称 需求描述: 将文章信息列表关联作者名称 代码如下: ?

    2.9K30

    响应式编程|Kotlin与LiveData扩展函数实践技巧

    上面是一个很简单的例子,一个简单的赋值语句,但是这种代码有一个缺陷,那就是如果我们想表达的并不是一个赋值动作,而是a和b之间的关系,即无论a,b如何变化,c永远是a,b的和。...其实就算是长期接触Java的Android开发者,应该也接触过Rx系列组件,例如RxJava, RxSwift, RxKotlin等等,这些都是典型的基于响应式编程设计的组件。...不同于面向对象的设计思想,在响应式编程的思想里,最基础的概念是 流(stream) 。从流的角度,反应性地思考和设计代码。...3.1 常规,但是不优雅的例子 在JAVA中我们想要订阅一个数据源,构建一个最简单的关系:“输出 = 输入”,在最基本的情况下,可以这么做: ?...重构播放页,一方面是为了提高播放页的可维护性、可扩展性,另一方面是为了尝试最新的Kotlin语言特性与[《Jetpack应用架构指南》](https://developer.android.google.cn

    1.7K10

    当Vert.x符合Reactive eXtensions(Vert.x简介的第5部分)

    该API已被移植到多种语言,如JavaScript,Python,C ++和Java。 让我们停下来静静地观察我们的世界。观察运动中的实体:交通拥堵,天气,谈话和金融市场。事情在并发演化着。...RxJava是Java中反应式库的通用语言,它提供以下五种类型来描述发布者: 流中的项目数 RxJava 2种类型 RX签名 回调签名 未来的签名 通知,数据流 0..N 可观察,可流动 Observable...返回一个。要启用密钥生成,我们使用该方法。从观察结果中获取结果并使用映射函数对其进行转换。这里我们只是调整选项。...它接受一个函数作为参数,不同的是运营商,这个函数返回一个流(所以,,...)。从观察到的流中为每个项目调用此函数,并将返回的流展平,以便项目序列化为单个流。由于流是异步构造,调用会创建一个顺序组合。...Vert.x和RxJava的组合将您的反应性带到了另一个层次。您可以非常轻松地编写和处理异步操作和流。 现在,不要忘记没有什么是免费的。RX可能很难理解。它可能看起来很奇怪。

    2.7K20

    Kotlin 1.2 的新增特性

    其他语言特性 注解中的数组常量 从 Kotlin 1.2 开始,注解的数组参数可以使用新的数组常量语法而不是 arrayOf 函数来传递: 数组常量语法被限制为注释参数。...新 artifacts 中的声明从 Kotlin 的角度来看在相同的包名下可见的,但是对 Java 而言它们有不同的包名。因此,切换到新的 artifacts 不需要对源代码进行任何更改。...BigInteger 和 BigDecimal 的运算与转换 Kotlin 1.2 引入了一组用于操作 BigInteger 和 BigDecimal 以及使用从其他数字类型进行转换的函数。...用于从位表示形式中转换为浮点数 Regex 类现在是可序列化的 kotlin.text.Regex 类已成为可序列化的类,现在可以在可序列化的层次结构中使用。...的平台类型上调用 x.equals(null) 时,如果 x 为 null,则会不正确地返回 true。从 Kotlin 1.2 开始,在平台类型的空值上调用 x.equals(...)

    2.8K70

    Kotlin 1.2 的新增了哪些特性?

    详细信息请参考此文档,并按照步骤构建多平台项目。 其他语言特性 注解中的数组常量 从 Kotlin 1.2 开始,注解的数组参数可以使用新的数组常量语法而不是 arrayOf 函数来传递: ?...新 artifacts 中的声明从 Kotlin 的角度来看在相同的包名下可见的,但是对 Java 而言它们有不同的包名。因此,切换到新的 artifacts 不需要对源代码进行任何更改。...BigInteger 和 BigDecimal 的运算与转换 Kotlin 1.2 引入了一组用于操作 BigInteger 和 BigDecimal 以及使用从其他数字类型进行转换的函数。...用于从位表示形式中转换为浮点数 Regex 类现在是可序列化的 kotlin.text.Regex 类已成为可序列化的类,现在可以在可序列化的层次结构中使用。...的平台类型上调用 x.equals(null) 时,如果 x 为 null,则会不正确地返回 true。从 Kotlin 1.2 开始,在平台类型的空值上调用 x.equals(...)

    2.8K10

    Reactor响应式编程 之 简介

    这在全球经济下行的背景下,是一种成本更低的方式; 1.2 异步能拯救一切嘛? 通过编写异步非阻塞的代码,可以将执行切换到使用了相同底层资源的另一活动任务上,然后在异步完成之后返回到当前任务。...java 提供了两种编写异步(异步不一定非阻塞)代码的方式。 Callbacks:不立即返回对象,但是提供了一个 callback 参数,当结果可返回时调用。...调用 get() 方法会阻塞; 缺乏对多值和高级错误处理的支持。 1.3 从命令式到响应式 作为响应式编程方向上的第一步,Microsoft在.NET生态中创建了响应式(Rx)扩展库。...其接口已经集成到了Java9中的 Flow 类下。...它扩展了观察器模式,以支持数据序列和/或事件,并添加了操作符,允许您以声明的方式将序列组合在一起,同时抽象出诸如低级线程、同步、线程安全、并发数据结构和非阻塞I/O等问题。

    1.2K80

    是时候使用Kotlin编程了

    Kotlin是如何兼容Java的 都是Kotlin可以100%的兼容Java,那么Kotlin又是如何兼容Java的呢?下面是Kotlin的一个编译流程图。...伴生对象的调用跟Java一样,通过类名.属性名称或函数名称调用。 新特性 1,空安全 在Kotlin中,对象声明分为可空引用和非空引用两种。...例如: 通过函数调用给可空引用赋值,返回的必须也是可空引用,这就在编译期间杜绝了空指针异常。...但是这里要注意一点,如果从Java返回的集合,不会强制做可空检查,这个是时候如果给不可空引用赋值Java集合中的null会出现转换错误异常。...反射可以获取类的方法,属性,类结构等所有信息。 在Kotlin中使用Java的反射的实例如下: jc返回的是Java的class对象,可以通过这个对象去调用调用Java的反射内容。

    3.3K10

    reactor 第一篇 响应式简介

    这在全球经济下行的背景下,是一种成本更低的方式; 1.2 异步能拯救一切嘛? 通过编写异步非阻塞的代码,可以将执行切换到使用了相同底层资源的另一活动任务上,然后在异步完成之后返回到当前任务。...java 提供了两种编写异步(异步不一定非阻塞)代码的方式。 Callbacks:不立即返回对象,但是提供了一个 callback 参数,当结果可返回时调用。...调用 get() 方法会阻塞; 缺乏对多值和高级错误处理的支持。 1.3 从命令式到响应式 作为响应式编程方向上的第一步,Microsoft在.NET生态中创建了响应式(Rx)扩展库。...其接口已经集成到了Java9中的 Flow 类下。...6.3 RxJava2 ReactiveX 结合了观察者模式、迭代器模式和函数式编程的最佳思想。

    39210

    Kotlin入门学习,从零基础入门到精通 ,Kotlin超详细教程

    函数定义与调用:使用fun关键字定义函数,函数可以有参数和返回值。 如何学习该知识 通过编写简单的Kotlin代码,练习变量声明、数据类型使用、控制流语句和函数定义与调用。...可空性:Kotlin中的变量可以是可空的(Nullable)或不可空的(NonNull)。使用?表示变量可能为null,使用!!进行非空断言。 空值处理:Kotlin提供了安全调用(?.)...如何学习该知识 通过编写包含集合操作和区间表达式的Kotlin代码,练习使用这些特性。 阅读Kotlin官方文档或相关教程,深入理解Kotlin集合与迭代器的用法。...Channel:Kotlin协程中的Channel用于在协程之间传递数据。 如何学习该知识 通过编写包含协程和异步代码的Kotlin代码,练习使用这些特性。...高阶函数:函数可以作为参数或返回值传递给其他函数,用于实现更灵活和可重用的代码。 如何学习该知识 通过编写包含扩展函数和高阶函数的Kotlin代码,练习使用这些特性。

    29710

    LiveData 还有学习的必要吗?—— Jetpack 系列(2)

    1.2 LiveData 的使用方法 1、添加依赖: 在 build.gradle 中添加 LiveData 依赖,需要注意区分过时的方式: // 过时方式(lifecycle-extensions 不再维护...1.4 LiveData 的替代者 1、RxJava: RxJava 是第三方组织 ReactiveX 开发的组件,Rx 是一个包括 Java、Go 等语言在内的多语言数据流框架。...功能强大是它的优势,支持大量丰富的操作符,也支持线程切换和背压。然而 Rx 的学习门槛过高,对开发反而是一种新的负担,也会带来误用的风险。...2、Kotlin Flow: Kotlin Flow 是基于 Kotlin 协程基础能力搭建的一套数据流框架,从功能复杂性上看是介于 LiveData 和 RxJava 之间的解决方案。...,主要思路是将 LiveData 源码中的 Observer#mLastVersion 和 LiveData#mVersion 在子类中重新实现一遍。

    3.6K10

    kotlin相比于java的好处和坏处_kotlin和java

    Kotlin 中没有空变量或对象。 空变量或对象是 Java 语言的一部分。 Kotlin 结合了面向对象和函数式编程的特性。 Java 仅限于面向对象的编程。 Kotlin 不支持静态成员。...Java 使用两个协程选项作为 1) Rx Java 和 2) Project Loom。 Kotlin 没有任何通配符类型。 wide-card在 Java 中可用。...Kotlin 的优势 以下是 Kotlin 的优点/优点: 使用 Kotlin 多平台框架,您可以提取一个通用代码库,同时针对所有这些代码库 Kotlin 提供了内置的 null 安全支持,这是一个救星...帮助开发者创建扩展功能 提供了一种非常简单且几乎自动化的方式来创建数据类 Kotlin 是一种静态类型语言,因此非常易于阅读和编写。 这种语言允许以各种方式交换和使用来自 Java 的信息。...大量熟练的开发人员可用 大量的第 3 方库 它允许您形成标准程序和可重用代码。 它是一个多线程环境,允许您在一个程序中同时执行多个任务。

    7K10

    我写了一本书,《深入理解 Kotlin 协程》

    还是一个雏形,直到我去年重制Kotlin从入门到精通和编写 《深入理解 Kotlin 协程》 时,才为它添加了作用域、取消支持等功能,并进一步的完善很多细节上的设计。...视频课程“Kotlin从入门到精通”中对协程的剖析 现在,我把前面的这些积累以及在于大家交流过程中发现的问题进行了分析和整理,参考了各家语言对于协程的实现,系统地剖析了 Kotlin 协程的方方面面,编撰成了这样一本...除了使用 Haskell 编写的 Pandoc 的插件 cross-ref 我实在无法快速上手以外,我学习到了如何使用 Python 和 Lua 编写用来在编译过程中处理图片生成逻辑和文字预处理的 Pandoc...过滤器,以及如何通过修改源码解决 plantUML、mermaid.js、rx-marbles 的样式定制和字体的支持的问题,最后还借机学会了如何制作 docker 镜像。...当然,除了有意思之外,在写作的过程中我也确实无数次感觉到了对文字细节的疲惫,但一次次的修改和校对之后又觉得非常值得。

    1.4K10

    Reactive Extensions介绍

    Reactive Extensions(Rx)是对LINQ的一种扩展,他的目标是对异步的集合进行操作,也就是说,集合中的元素是异步填充的,比如说从Web或者云端获取数据然后对集合进行填充。...LINQ和Rx可以这些序列进行一系列操作然后得到一个新的序列。 Rx提供了一种新的组织和协调异步事件的方式,例如协调多个从云端返回的多个异步的数据流。...Rx最显著的特性是使用可观察集合(Observable Collection)来达到集成异步(composing asynchronous)和基于事件(event-based)的编程的效果。...Mono 3.2已经包含了Rx框架,我们的代码都是Mono中执行的,看下效果: ? Rx中的一些操作符和LINQ操作符有很多功能是相同的。...下面对最常用的take,skip,distinct,using和zip这个操作符进行说明。 Take Rx中的Take操作符和LINQ中的功能一样,它用来指定获取集合中的前几项。

    1.5K90
    领券