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

Kotlin扩展函数 ② ( 扩展属性 | 为空类型定义扩展函数 | 使用 infix 关键字修饰单个参数扩展函数简略写法 )

文章目录 一、扩展属性 二、空类扩展 三、使用 infix 关键字修饰单个参数扩展函数简略写法 一、扩展属性 ---- 上一篇博客 【Kotlin扩展函数 ( 扩展函数简介 | 为 Any 超类定义扩展函数...---- 之前讲定义扩展函数 , 扩展属性 , 都是为 非空类型 定义 , 如果要为 空类型 定义扩展函数 , 则需要在 扩展函数 中 处理时 , 要多考虑一层 接收者 this 为空 情况...; 注意下面的调用细节 : 如果定义 扩展函数 是 为 非空类型定义 , 空类型变量 想要调用该 扩展函数 , 在调用时使用 " ?....非空类型扩展函数 如果定义 扩展函数 是为 空类型定义 , 空类型变量 想要调用该 扩展函数 , 在调用时直接使用 " . " 进行调用即可 ; 空类型实例对象.空类型扩展函数 代码示例...---- 如果 扩展函数 只有 一个参数 , 并且在 扩展函数 定义时 使用了 infix 关键字修饰 , 在调用该扩展函数时 , 可以省略 接收者与函数之间点 和 参数列表括号 ; 调用 使用

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

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

Rx响应式编程系列框架中,很多朋友RxJava是最熟悉,其实它还有很多同胞。比如:RxKotin, RxSwift,RxPhp, RxGo, RxNet, RxJS......,一想到iOS必定RxSwift很熟悉, Android开发RxJava却情有独钟!今天就来涨涨RxKotin姿势! ?...流,具体细节参考推荐文章。...RxKotlin RxKotlin是基于kotlin扩展rx衍生体,kotlin无需再普及,这种支持Lambdas语法简洁姿势,会让代码变得小清新和灵活。可能你已经在java8上体验了一番。...通过这个简单栗子,发现不管用rxJava, 还是只用retrofit, 通过使用rxkotlin将业务流程变得更加清晰,那么kotlin是否也有他操作符,当然他也有过滤器,转换器,拆分符和rxjava

88610

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

提示: 更多关于OkHttp 使用参考: http://square.github.io/okhttp/ 创建 Kotlin Gradle 项目 我们首先使用 IDEA 创建 Kotlin Gradle...Observer) ),发送数据 sender (也就是可被观察对象( Observable)) 所发射数据数据序列作出响应。...HttpRequestWrapper是扩展函数init()接收者,点号 . 是扩展函数修饰符。 我们在函数体内直接调用了这个函数字面量 wrap.init() 。...本节工程源码: https://github.com/EasyKotlin/chatper14_kotlin_dsl_http 本章小结 相比于Java,Kotlin函数式编程支持更加友好。...Kotlin 扩展函数和高阶函数(Lambda 表达式),为定义Kotlin DSL提供了核心特性支持。 使用DSL代码风格,可以让我们程序更加直观易懂、简洁优雅。

1.7K20

RxJava】ReactiveX 简介 ( ReactiveX 概念 | ReactiveX 组成部分 - 被观察者 观察者 操作符 调度器 订阅 | ReactiveX 支持语言 )

一、RxJava 简介 1、ReactiveX 概念 RxJava 框架 是 ReactiveX ( Reactive Extensions 响应式编程扩展 ) 在 Java 语言 上实现 , 该框架...Observers(观察者): Observer 是一个观察者 , 可以消费被观察者发送事件,通过订阅 Observable 来 接收 数据项 或事件 ; Observer 可以定义收到数据项和事件处理逻辑...Operators(操作符): 操作符是用于处理和转换 Observable 发射数据函数。操作符可以用于过滤、变换、组合和聚合等操作,以便更灵活地处理数据。...RxJava - Java 语言 RxSwift - Swift 语言 RxKotlin - Kotlin 语言 RxJS - JavaScript 语言 开发者 可以 在 不同平台 / 不同语言 中...使用 异步编程模型 和 操作符,提高了代码 复用性 和 可维护性 ;

38210

Android 须知2019流行框架库及开发语言

好了,闲话不多说了,下面一起来看看流行技术吧。 图片加载库 Universal-Image-Loader,早期广泛被用一个重复使用仪器为异步图像加载、缓存、显示。作者已经停止维护。...RxJava, 一个在 Java VM 上使用可观测序列来组成异步、基于观察者模式实现库。RxAndroid,函数响应式编程, 把 RxJava 带到 Android 环境中。...很多时候,编写 Android 程序,你也可以看成是数据处理和流动,换一种思想编程,曾经看起来很棘手问题,瞬间就很优雅解决了,相信你会被这种build模式开发会越来越爱。...抛弃沉重 Java 语法,Kotlin 融入了很多现代编程语言思想,作为开发者,接受新语言,了解新语言发展趋势,更有利于开阔你思路和加深语言理解。...在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试?使用Kotlin进行Android开发。

1.2K40

Android 必须知道2019年流行框架库及开发语言,看这一篇就够了!

好了,闲话不多说了,下面一起来看看流行技术吧。 图片加载库 Universal-Image-Loader,早期广泛被用一个重复使用仪器为异步图像加载、缓存、显示。作者已经停止维护。...RxJava, 一个在 Java VM 上使用可观测序列来组成异步、基于观察者模式实现库。 RxAndroid,函数响应式编程, 把 RxJava 带到 Android 环境中。...很多时候,编写 Android 程序,你也可以看成是数据处理和流动,换一种思想编程,曾经看起来很棘手问题,瞬间就很优雅解决了,相信你会被这种build模式开发会越来越爱。...抛弃沉重 Java 语法,Kotlin 融入了很多现代编程语言思想,作为开发者,接受新语言,了解新语言发展趋势,更有利于开阔你思路和加深语言理解。...在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试? 使用Kotlin进行Android开发。

2.5K70

Kotlin Coroutines Flow 系列(二) Flow VS RxJava2

Flow VS RxJava Kotlin 协程库设计本身也参考了 RxJava ,下图展示了如何从 RxJava 迁移到 Kotlin 协程。...) 借助扩展函数可以实现类似 RxJava onCompleted() 功能,只有在正常结束时才会被调用: fun Flow.onCompleted(action: () -> Unit...RxJava2 Flowable 支持 Backpressure 策略,包括: MISSING:创建 Flowable 没有指定背压策略,不会对通过 OnNext 发射数据做缓存或丢弃处理。...这一点跟 DROP 策略一样,不同是,不管缓存池状态如何,LATEST 策略会将最后一条数据强行放入缓存池中。 而 Flow Backpressure 是通过 suspend 函数实现。...fun Flow.onBackpressurureDrop() : Flow = FlowOnBackpressureDrop(this) 使用这个库的话,可以通过使用 Flow 扩展函数

1K10

Kotlin 学习笔记(五)—— Flow 数据流学习实践指北(一)

使用方和提供方是一关系。 热流(Hot Flow):无论有无使用方,提供方都可以执行发送数据操作,提供方和使用方是一关系。热流就是不管有无消费,都可生产。...是集合扩展方法,可将其他数据转换成 Flow,例如 Array 扩展方法: //code 4 public fun Array.asFlow(): Flow = flow {...forEach { value -> emit(value) } } 不仅 Array 扩展了此方法,各种其他数据类型数组都扩展了此方法。...,zip 方法第二个参数就是针对两个 Flow 进行各种处理挂起函数,也如例子中写成尾调函数样子,返回值是处理之后 Flow。...不同是 Flow 是将接收到数据放到 Flow 载体中,而 RxJava 一般将数据放到 Observable 对象中;Flow 处理数据更加方便和自然,去除了 RxJava 中繁多且功能臃肿操作符

1.5K10

利用Kotlin方式如何处理网络异常详解

前言 之前文章 RxJava处理业务异常几种方式 曾经介绍过 Retrofit 异常可以有多种处理方式。 其中,可以使用 RxJava 错误处理操作符,它们是专门用来处理异常。...使用 Kotlin 特性 这次我结合 Kotlin 扩展函数特性来尝试处理异常。...错误处理操作符,可以编写如下扩展函数: import com.safframework.utils.RetryWithDelay import io.reactivex.Maybe /**...它 action 参数传递是一个函数,专门用于处理异常。每一个网络请求异常处理并不会都一样,可以用该函数来传递不同异常处理。 总结 合理利用 Kotlin 扩展函数,可以编写优雅代码。...而使用高阶函数,则可以达到进一步抽象。 好了,以上就是这篇文章全部内容了,希望本文内容大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家ZaLou.Cn支持。

82020

Google 推荐在 MVVM 架构中使用 Kotlin Flow

Flow 库是在 Kotlin Coroutines 1.3.2 发布之后新增库,也叫做异步流,类似 RxJava Observable 、 Flowable 等等,所以很多人都用 Flow 与...> 接受数据速度,LiveData 无法正确处理这些请求 使用 LiveData 最大问题是所有数据转换都将在主线程上完成 RxJava 虽然支持线程切换和背压,但是 RxJava 那么多傻傻分不清楚操作符...: Flow 支持线程切换、背压 Flow 入门门槛很低,没有那么多傻傻分不清楚操作符 简单数据转换与操作符,如 map 等等 Flow 是 Kotlin 协程扩展,让我们可以像运行同步代码一样运行异步代码...方法二 中 liveData{ ... } 封装 asLiveData 是 Flow 扩展函数,返回值是一个 LiveData liveData{ ... } 协程构造方法提供了一个协程代码块,在...}) } } 到这里关于 Kotlin Flow 在 MVVM 当中每层实践就分析完了,如果使用过 RxJava 小伙伴们应该会非常熟悉,对于没有使用过 RxJava 小伙伴们

4.1K20

Reactor响应式编程 之 简介

调用 get() 方法会阻塞; 缺乏多值和高级错误处理支持。 1.3 从命令式到响应式 作为响应式编程方向上第一步,Microsoft在.NET生态中创建了响应式(Rx)扩展库。...在底层,它使用 Project Reactor,但是,你也可以将它与 RxJava (或任何其他响应流实现)一起使用,它甚至可以与 Kotlin 协程一起工作。...换句话说, Reactor 是一个基础响应式包,Spring WebFlux 是一个框架,这个框架默认使用 Reactor,但是可以使用 RxJava,也可以使用 Kotlin 等其他响应式包。...Hello World 级示例:https://blog.csdn.net/get_set... 6.2 RxJava2 ReactiveX 结合了观察者模式、迭代器模式和函数式编程最佳思想。...它扩展了观察器模式,以支持数据序列和/或事件,并添加了操作符,允许您以声明方式将序列组合在一起,同时抽象出诸如低级线程、同步、线程安全、并发数据结构和非阻塞I/O等问题。

1.2K80

Kotlin开发中如何使用集合详解

数据处理 Kotlin 中有一个拓展函数特性,这个特性可以使 Kotlin 标准库(stdlib)支持 JDK 方法。...但是由于 Android 工程师不能使用 Stream API,所以他们更多使用 RxJava 处理数据方法来解决这个问题。...然后,这种操作并不完全正确,原因在于:RxJava 是一个事件处理库,而不是数据处理。所以你现在可以使用 Kotlin 来解决这个问题而不必担心这些问题。...所有扩展函数都可以作为静态方法访问。 总结 Android 开发语言 Kotlin 是一门非常有趣语言。它能帮助我们编写更加简洁和安全代码。初次之外,Kotlin 与 Java 兼容。...好了,以上就是这篇文章全部内容了,希望本文内容大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家ZaLou.Cn支持。

2.6K10

Android快速转战Kotlin教程

NO.3 《疯狂Kotlin讲义》 ? 本书尤其适合从Java转Kotlin读者,对于没有Java功底读者,忽略“对比”部分,直接学习本书也掌握Kotlin编程。...本书Kotlin解读十分系统、全面,超过Kotlin官方文档本身覆盖内容。...本书很多地方都会结合Java字节码进行深入解读,比如对Kotlin扩展解读,Kotlin主、次构造器解读,这种解读目的不止于教会读者简单地掌握Kotlin用法,而是力求让读者深入理解Kotlin...第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了空性和集合概念)。...项目通过一个天气例子很好展示了kotlin带来强大功能,比如网络数据请求,数据缓存设计,数据操作,各种扩展函数妙用等等。

2.7K22

利用Kotlin协程实现简单异步加载详解

在本篇文章中呢我想给大家分享是使用KotlinCoroutine(协程)来实现耗时操作异步加载,现在有RxJava这么屌库我们为什么还要了解这个呢?...通过这儿例子代码你会发现在kotlin里边使用协程来实现线程间通信和切换非常简单,比RxJava还简单。看上去就跟你写同步方式代码一样。...我们在所有实现LifecycleOwner接口类中扩展了一个load函数。...Kotlin Coroutine DSL 上边我们定义了两个扩展函数和一个用于取消协程类,让我们来看看如何使用它们,代码如下: load { MediaStore.Images.Media.getBitmap...和RxJava这种框架比起来Kotlin协程可能没有它那么强大。但是Kotlin协程可读性更强,也更简单。现在你可以安全使用它来执行你异步操作了,再也不用担心内存泄漏发生了。

2K20

Kotlin方式来处理网络异常

其中,可以使用 RxJava 错误处理操作符,它们是专门用来处理异常。 随便例举两个操作符: onErrorReturn 操作符,表示当发生错误时候,发射一个默认值然后结束数据流。...所以 Subscriber 看不到异常信息,看到是正常数据流结束状态。 onErrorResumeNext 操作符,表示当错误发生时候,使用另外一个数据流继续发射数据。...在返回被观察者中是看不到错误信息。 二. 使用 Kotlin 特性 这次我结合 Kotlin 扩展函数特性来尝试处理异常。...错误处理操作符,可以编写如下扩展函数: import com.safframework.utils.RetryWithDelay import io.reactivex.Maybe /**...它 action 参数传递是一个函数,专门用于处理异常。每一个网络请求异常处理并不会都一样,可以用该函数来传递不同异常处理。 总结 合理利用 Kotlin 扩展函数,可以编写优雅代码。

51620

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

Kotlin 中创建 DSL , 一般主要使用下面3个特性: 扩展函数扩展属性 带接收者 Lambda 表达式(高阶函数) invoke 函数调用约定 例如上面的示例 UI {...}...我们知道,一个函数predicate: (T) -> Boolean我们可以直接这样调用predicate(element), 这样代码实例我们可以在List扩展函数filter To 中看到 public...Observer) ),发送数据 sender (也就是可被观察对象( Observable)) 所发射数据数据序列作出响应。...源码详见: https://github.com/EasyKotlin/chatper14_kotlin_dsl_http 本章小结 相比于Java,Kotlin函数式编程支持更加友好。...Kotlin 扩展函数和高阶函数(Lambda 表达式),为定义Kotlin DSL提供了核心特性支持。 使用DSL代码风格,可以让我们程序更加直观易懂、简洁优雅。

1.3K20
领券