also 就像 apply:它接受接收者、做一些动作、并返回该接收者。...它检查接收者是否满足该谓词,并 在满足时返回该接收者否则不满足时返回 null。...当它 不 满足谓词时返回接收者,否则返回 null。...类似于 Array 构造函数,现在有创建 List 和 MutableList 实例的函数,并通过 调用 lambda 表达式来初始化每个元素: 函数 标准库现在提供了一组用于逐个元素操作数组的函数:比较 (contentEquals 和 contentDeepEquals),哈希码计算(contentHashCode 和 contentDeepHashCode
one=1, two=2, three=3} 8、分组 Kotlin 标准库提供用于对集合元素进行分组的扩展函数。...标准库包含用于取集合的一部分的扩展函数。...two] 12、集合聚合操作 12.1、常用聚合操作函数 Kotlin 集合包含用于常用的 聚合操作 (基于集合内容返回单个值的操作)的函数 。...reduce()与fold() 都是依次将所提供的操作函数应用于集合元素并返回累积的结果。...另外,还有两个函数能避免此类异常: getOrElse():提供用于计算默认值的函数,如果集合中不存在索引,则返回默认值。 getOrNull():返回 null 作为默认值。
什么是作用域函数(Scope Functions)? Kotlin 标准库包含了几个特殊的函数,其目的是在调用对象的上下文环境(context)中执行代码块。...,尽可能少的创建对象,仅此而已。...let context 对象作为闭包参数(it)传入,返回值是闭包结果。 let 可用于在调用链的结果上调用一个或多个函数。...:with takeIf 和 takeUnless 除了作用域函数之外,标准库还包含函数 takeIf 和 takeUnless。...这些函数允许你在调用链中嵌入对象状态的检查。 这两个函数的作用是对象过滤器,takeIf 返回满足条件的对象或 null。takeUnless 则刚好相反,它返回不满足条件的对象或 null。
安全调⽤用符 kotlin默认不能空,变量类型后面跟?号定义,表明这是一个可空类型 ?. 代表着如果该类型为空的话就返回null不做后续的操作,如果不为空的话才会去访问对应的方法或者属性 !!....如果想写工具类的功能,直接创建文件,写 top-level「顶层」函数。...创建数组,增加很多有用的工具函数 contains()first()find() val strs: Array = arrayOf("a", "b", "c") 循环通过标准函数..." to 3) listOf() 创建不可变的 List,mutableListOf() 创建可变的 List Kotlin 中集合分为两种类型:只读的和可变的。...var textViews: List var textViews: List Kotlin 标准函数 使⽤用时可以通过简单的规则作出一些判断 返回
Kotlin中的Contract契约是一种向编译器通知函数行为的方法。 起 val nullList: List?...isNullOrEmpty(): Boolean 这个函数返回值如果是false, 那么 implies (this@isNullOrEmpty != null)....: Boolean { // val a = 1 // 这里契约的意思是: 调用 isNotEmptyWithContract 函数,会产生这样的效果: 如果返回值是true, 那就意味着...常见标准库函数run,also,with,apply,let 这些函数大家再熟悉不过吧,每个里面都用到contract契约: //以apply函数举例,其他函数同理 @kotlin.internal.InlineOnly.../stdlib/kotlin.collections/is-null-or-empty.html ---- Kotlin 开发者社区 国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin
所有函数类型都有一个圆括号括起来的参数类型列表以及一个返回类型:(A, B) -> C 表示接受类型分别为 A 与 B 两个参数并返回一个 C 类型值的函数类型。...(Int) -> String 函数类型表示法可以选择性地包含函数的参数名:(x: Int, y: Int) -> Point。 这些名称可用于表明参数的含义。...因为这其实是个假的调用,它是 Kotlin 的语法糖,实际上你对一个函数类型的对象加括号、加参数,它真正调用的是这个对象的 invoke() 函数 双冒号 :: 创建一个函数引用或者一个类引用 函数引用...:将所提供的操作应用于集合元素并返回累积的结果 val items = listOf(1, 2, 3, 4, 5) // Lambdas 表达式是花括号括起来的代码块。...Kotlin 标准库包含几个函数,它们的唯一目的是在对象的上下文中执行代码块。
上次我们学习了kotlin的null安全、异常、先决条件,接下来来看看kotlin的字符串操作、数字类型、标准库函数 一、字符串操作 1.字符串截取 substring函数支持IntRange类型参数,...kotlin提供了toIntOrNull这样的函数,如果不能转换,不抛出异常,而是返回null fun main() { val num: Int?...kotlin提供的标准库函数,又进一步的提升了编写代码效率,掌握它们是使用kotlin的前提 1.apply apply函数可以看作一个配置函数,它的作用域内可以直接使用接收者的函数,并在最后自动返回接收者...setReadable(true) } } 2.run run函数和apply类似,只不过最后返回的是匿名函数结果,另外标准库函数都可以执行函数引用,非常方便 fun main...run { readText() } .run(::println) } 7.takeUnless 和takeIf相反,表达式结果为true,则返回null,否则返回接收者对象,一般使用
本文的存在就是这个意义,我们将介绍从 Java 8 开始到 Java 16 重要的开发内容更新,并附带这些更新在以 Java 8 为运行时的 Kotlin 是如何处理的,以帮助开发者们能够更快的适应和享受新的...对于 Kotlin 来说,由于其可以基于 Java 8 运行,因此在大多数情况下无需进行更多更改,只需要在模组或插件内包含一个 Kotlin 的标准库,便可以享受 Kotlin 带来的便捷开发。...In Kotlin val list = arrayListOf() 使用 Record Class 更方便的创建数据传输对象 In Java 8 public class Point{..."one" to 1, "two" to 2) 除此之外,支持更多平台,支持 TLS 1.3,全新的 jlink 工具,HTML5 标准的 Javadoc,更强大的 ZGC 等特性都将可以在全新的 Java...值得一提的是,Java 8 中内置的 JavaScript 解析器 Nashron ,jjs 工具,Java EE,Unsafe::defineAnonymousClass(),基本数据类型的包装对象的构造函数都在
不要只是为了保存“Foo 的所有扩展函数”而创建文件。...= …… 例外:用于创建类实例的工厂函数可以与要创建的类具有相同的名称: abstract class Foo { …… } class FooImpl : Foo { …… } fun Foo(...使用工厂函数创建集合实例时,尽可能选用返回不可变集合类型的函数: // 不良:使用可变集合类型作为无需改变的值 fun validateValue(actualValue: String, allowedValues...每当你有一个主要用于某个对象的函数时,可以考虑使其成为一个以该对象为接收者的扩展函数。为了尽量减少 API 污染,尽可能地限制扩展函数的可见性。...根据需要,使用局部扩展函数、成员扩展函数或者具有私有可视性的顶层扩展函数。 使用中缀函数 一个函数只有用于两个角色类似的对象时才将其声明为中缀函数。良好示例如:and、 to、zip。
, 5 11月 2022 作者 847954981@qq.com 后端学习, 我的编程之路 Kotlin安卓开发学习-标准函数和静态方法 Kotlin的标准函数指的是Standard.kt文件中定义的函数...,任何Kotlin代码都可以自由地调用所有的标准函数。...其最主要使用的是with、run和apply这三个函数。 with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。...object Util { fun doAction() { println("do action") } } 在Kotlin中,我们可以通过在单例类内创建方法,并在之后的代码中使用...除了添加注解来实现静态方法,Kotlin也能使用顶层方法来实现效果。 顶层方法指的是那些没有定义在任何类中的方法。比如我们创建一个新的Kotlin文件,并在内部直接写入方法,那么这个方法就是顶层方法。
Kotlin的作用域函数 Kotlin 标准库包含几个函数,它们的唯一目的是在对象的上下文中执行代码块。当对一个对象调用这样的函数并提供一个 lambda 表达式时,它会形成一个临时作用域。....() -> R): R 第二个run的声明方式则不同,它不是扩展函数,并且块中也没有输入值,因此,它不是用于传递对象并更改属性的类型,而是可以使你在需要表达式的地方就可以执行一个语句。...with使用的是非null的对象,当函数块中不需要返回值时,可以使用with。...apply函数主要用于初始化或更改对象,因为它用于在不使用对象的函数的情况下返回自身。...用于初始化对象或更改对象属性,可使用apply 如果将数据指派给接收对象的属性之前验证对象,可使用also 如果将对象进行空检查并访问或修改其属性,可使用let 如果是非null的对象并且当函数块中不需要返回值时
有任何问题,欢迎随时与我交流~ ---- 本章将介绍Kotlin标准库中的集合类,我们将了解到它是如何扩展的Java集合库,使得写代码更加简单容易。...其中, listOf()用于创建没有元素的空List listOf(element: T)用于创建只有一个元素的List listOf(vararg elements: T)用于创建拥有多个元素的List...迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Kotlin中的Iterator功能比较简单,并且只能单向移动: (1) 调用iterator()函数,容器返回一个Iterator实例。...遍历集合每个元素,得到通过函数算子transform映射之后的值,剔除掉这些值中的null,返回一个无null元素的集合。...)分组,并返回Map。
❞ 编译器将使用函数签名中的额外参数completion(Continuation类型)替换suspend修饰符,该参数将用于将suspend函数的结果传达给调用它的coroutine。...这允许函数在可以时同步返回。...此外,编译器将创建一个私有类,1)持有所需的数据,2)递归地调用loginUser函数以恢复执行。你可以看看下面这个生成的类的近似值。 ❝免责声明:注释不是由编译器生成的。...= null // Common objects for all CoroutineImpls var result: Any?...= null // Common objects for all CoroutineImpl var result: Any?
可以检索单个实体和检索多个实体作为一个之间切换List或Stream通过终止方法:first(),one(),all(),或stream()。...(); 11.6.9.Kotlin 的类型安全查询 Kotlin 通过其语言语法和扩展系统支持特定领域的语言创建。...Spring Data MongoDB 附带一个 Kotlin 扩展,用于Criteria使用Kotlin 属性引用来构建类型安全查询。使用此扩展的查询通常受益于提高的可读性。...您可以使用它来创建Example. 默认情况下,null忽略具有值的字段,并使用商店特定的默认值匹配字符串。 将属性包含在 Query by Example 标准中是基于可空性。...这种方法创建了一个回调,要求实现者修改匹配器。您不需要返回匹配器,因为配置选项保存在匹配器实例中。以下示例显示了使用 lambda 的匹配器: 示例 96.
为了让你强制基础设施注册一个转换器,只有一个办法,我们提供@ReadingConverter并@WritingConverter在转换器实现使用注解。...如果您通过start.spring.io引导 Kotlin 项目,则默认提供这些。 20.2.零安全 Kotlin 的关键特性之一是空安全,它null在编译时干净地处理值。...(Kotlin 允许使用具有可为空值的函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释的支持为Kotlin 开发人员提供了整个 Spring Data API 的空安全,具有null在编译时处理相关问题的优势。...inCollection("star-wars").all() 在 Java 中,charactersKotlin 是强类型的,但 Kotlin 巧妙的类型推断允许使用更短的语法。
使用Java来写需要继承各个方法并逐个填充,但Kotlin可以直接创建数据类: data class Cellphone(val brand: String, val price: Double) 当用....map { it.toUpperCase() } //全部大写表示 any和all函数前者用于判断集合中是否至少存在一个元素满足条件,后者判断是否所有元素都满足条件: val anyResult...= list.any { it.length <= 5 } val allResult = list.all { it.length <= 5 } 空指针检查 Kotlin有着严格的空指针检查,它在编译时就会检查代码是否安全...(会不会出现null),这当然会导致代码变得比较男鞋,但是Kotlin也提供了一系列辅助工具。...这个操作符的左右两边都接收一个表达式,如果左边表达式的结果不为空就返回左边表达式的结果,否则就返回右边表达式的结果。如: //简化前 val c = if (a !
但是,您应该知道大多数默认构造函数都会创建哈希表(例如 Java 中的?LinkedHashMap)。 支持 Kotlin Maps 的不变性 有趣的是,Kotlin 中maps的标准接口是不可变的。...由于 Kotlin 的简洁语法,初始化一个新maps就像执行以下操作一样简单: val numbers: MutableMap = mutableMapOf( "one...它返回与该键关联的值。如果映射中不存在键,则返回null。Kotlin 鼓励?空安全。这就是为什么返回类型被清楚地标记为可空类型的原因。它强制您处理该值可能为空的事实以防止运行时异常。...对于插入,该方法返回 null。对于替换,它返回旧值。...它返回值,如果键在maps中不存在,则该值为 null。
五、also 标准库函数 六、takeIf 标准库函数 七、takeUnless 标准库函数 Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的...Kotlin 类型都可以调用这些函数 ; 一、apply 标准库函数 ---- Kotlin 标准库函数 中的 apply 函数 , 该函数可以看作 实例对象 的 配置函数 , 传入 T.() ->...'值作为参数的指定函数[block],并返回其结果。...---- 1、run 函数传入 Lambda 表达式作为参数 run 标准库函数原型如下 : /** * 调用以' this '值为接收者的指定函数[block],并返回结果。..., 则 返回 null 空值 ; takeIf 函数 的功能 也可以使用 if 语句实现 , 但是该函数 可以 直接 作用于 接收者对象 , 非常适合进行 函数式编程 的 链式调用 场景 , 如果使用
在Number类里面定义了数字类型之间显式转换的函数: package kotlin /** * Superclass for all platform classes representing numeric...支持数字运算的标准集,运算被定义为相应的类成员(但编译器会将函数调用优化为相应的指令)。...arrayOf() 来创建一个数组并传递元素值给它,这样 arrayOf(1, 2, 3) 创建了 array [1, 2, 3]。...库函数 arrayOfNulls() (初始化值为null),emptyArray(其实现是(arrayOfNulls(0) as Array)) 可以用于创建一个指定大小、元素都为空的数组...另一个选项是用接受数组大小和一个函数参数的工厂函数,用作参数的函数能够返回。
我们来举个栗子: 创建一个Person类来表示一个“人”,创建一个“人”的集合,查找其中年纪最大的人,并打印结果。...这些语言允许你定义可以存储任何数据类型的变量,或者返回任何数据类型的函数,并在运行时才解析方法和字段引用。这会减少代码量并增加创建数据结构的灵活性。...Kotlin特征集 函数类型,允许函数接受其他函数作为参数,或者返回其他函数。...lambda 表达式,让你用最少的样板代码方便地传递代码块 数据类,提供了创建不可变值对象的简明语法 标准库中包括了丰富的 API 集合,让你用函数式编程风格操作对象和集合 Kotlin 允许你使用函数式编程风格但并没有强制你使用它...执行代码 下图,kotlin编译过程流程图 kotlin编译器编译的代码依赖kotlin运行时库,如上图,他包括Kotlin自己的标准库的定义,以及Kotlin对标准Java API的扩展
领取专属 10元无门槛券
手把手带您无忧上云