美文网首页
使用kotlin语言30条须知

使用kotlin语言30条须知

作者: 小宝_6d94 | 来源:发表于2019-01-24 16:56 被阅读0次

1、对于具有多个参数的 lambda 表达式,可以使⽤ _ 字符替换不使⽤的参数的名称:

map.forEach { _, value -> println("$value!") }

2、:: 操作符来获取指向特定对象实例的⽅法或属性的成员引⽤。

3、onEach 是⼀个⼩、但对于集合和序列很有⽤的扩展函数,它允许对操作链中的集合/序列的每个元素
执⾏⼀些操作,可能带有副作⽤。

4、also 就像 apply :它接受接收者、做⼀些动作、并返回该接收者。 ⼆者区别是在 apply 内部的代码
块中接收者是 this, ⽽在 also 内部的代码块中是 it。

5、takeIf 就像单个值的 filter 。它检查接收者是否满⾜该谓词,并在满⾜时返回该接收者否则不满
⾜时返回 null 。

6、takeUnless 与 takeIf 相同,只是它采⽤了反向谓词。当它 不 满⾜谓词时返回接收者,否则返回
null 。

7、groupingBy()此 API 可以⽤于按照键对集合进⾏分组,并同时折叠每个组。

8、当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引⽤可为空。

9、is 运算符检测⼀个表达式是否某类型的⼀个实例。

10、when 将它的参数与所有的分⽀条件顺序⽐较,直到某个分⽀满⾜条件。 when 既可以被当做表达式使
⽤也可以被当做语句使⽤。如果它被当做表达式, 符合条件的分⽀的值就是整个表达式的值,如果当做
语句使⽤, 则忽略个别分⽀的值。

11、使⽤ in 运算符来检测某个数字是否在指定区间内

12、If not null 缩写println(files?.size)

13、If not null and else 缩写println(files?.size ?: "empty")

14、将短分⽀放在与条件相同的⾏上,⽆需花括号

15、当对链式调⽤换⾏时,将 . 字符或者 ?. 操作符放在下⼀⾏,并带有单倍缩进

16、总是使⽤不可变集合接⼝(Collection , List , Set , Map )来声明⽆需改变的集合。

17、如果需要在条件语句中⽤到可空的 Boolean , 使⽤ if (value == true) 或 if (value ==
false) 检测。

18、使⽤作⽤域函数 apply/with/run/also/let

-是否在块中的多个对象上调⽤⽅法,或者将上下⽂对象的实例作为参数传递?如果是,那么使⽤以
it ⽽不是 this 形式访问上下⽂对象的函数之⼀ ( also 或 let )。如果在代码块中根本没有
⽤到接收者,那么使⽤ also 。
-调⽤的结果是什么?如果结果需是该上下⽂对象,那么使⽤ apply 或 also 。 如果需要从代码块中
返回⼀个值,那么使⽤ with 、let 或者 run
-上下⽂对象是否可空,或者是否作为调⽤链的结果求值⽽来的?如果是,那么使⽤ apply 、let 或
者 run 。 否则,使⽤ with 或者 also 。

19、如果构造函数有注解或可⻅性修饰符,这个 constructor 关键字是必需的,并且这些修饰符在它前

20、如果类有⼀个主构造函数,每个次构造函数需要委托给主构造函数, 可以直接委托或者通过别的次构造
函数间接委托。委托到同⼀个类的另⼀个构造函数⽤ this 关键字即可。

21、初始化块中的代码实际上会成为主构造函数的⼀部分。委托给主构造函数会作为次构造函数的
第⼀条语句,因此所有初始化块中的代码都会在次构造函数体之前执⾏。即使该类没有主构造函数,这
种委托仍会隐式发⽣,并且仍会执⾏初始化块

22、如果⼀个⾮抽象类没有声明任何(主或次)构造函数,它会有⼀个⽣成的不带参数的主构造函数。构造函
数的可⻅性是 public。

23、在 Kotlin 中所有类都有⼀个共同的超类 Any,这对于没有超类型声明的类是默认超类。

24、如果类没有主构造函数,那么每个次构造函数必须使⽤ super 关键字初始化其基类型,或委托给另⼀
个构造函数做到这⼀点。 注意,在这种情况下,不同的次构造函数可以调⽤基类型的不同的构造函数。

25、如果函数没有标注 open,那么⼦类中不允许定义相同签名的函数, 不论加不加 override。将 open 修饰符添加到 final 类(即没有 open 的类)的成员上不起作⽤。标记为 override 的成员本⾝是开放的,也就是说,它可以在⼦类中覆盖。如果你想禁⽌再次覆盖,使⽤final 关键字。

25、设计⼀个基类时,应该避免在构造函数、属性初始化器以及 init 块中使⽤ open成员。

26、在⼀个内部类中访问外部类的超类,可以通过由外部类名限定的 super 关键字来实现:super@Outer

27、要检测⼀个 lateinit var 是否已经初始化过,请在该属性的引⽤上使⽤ .isInitialized

28、声明⼀个扩展函数,我们需要⽤⼀个 接收者类型 也就是被扩展的类型来作为他的前缀。如果⼀个类定义有⼀个成员函数与⼀个扩展函数,⽽这两个函数⼜有相同的接收者类型、相同的名字,都适⽤给定的参数,这种情况 总是取成员函数。

29、注意可以为可空的接收者类型定义扩展。这样的扩展可以在对象变量上调⽤, 即使其值为 null,并且可
以在函数体内检测 this == null,这能让你在没有检测 null 的时候调⽤ Kotlin 中的toString():检
测发⽣在扩展函数的内部。

30、类可以标记为 inner 以便能够访问外部类的成员。内部类会带有⼀个对外部类的对象的引⽤

相关文章

  • 使用kotlin语言30条须知

    1、对于具有多个参数的 lambda 表达式,可以使⽤ _ 字符替换不使⽤的参数的名称: 2、:: 操作符来获取指...

  • Kotlin—语言与开发资源简介

    Kotlin语言简介 Kotlin是JetBrains在2011年推出的一门全新的编程语言。使用Kotlin编写的...

  • Kotlin

    什么是Kotlin? Kotlin是由JetBrains设计并开源的JVM编程语言。Kotlin是使用Java开发...

  • Kotlin语言概述2

    本篇文章主要来看一下Kotlin语言的使用场景之一:Kotlin用在Android 使用Kotlin开发Andro...

  • 坐谈kotlin与java

    我是一名Android工程师,之前一直使用java语言进行开发,最近正在学习kotlin语言,想把kotlin语言...

  • Kotlin协程入门到体验

    Kotlin协程那么神奇,那具体该如何使用呢? 1.添加依赖Kotlin协程不属于Kotlin语言本身,使用之前必...

  • Kotlin 小细节记录(2)

    知识点 35.Kotlin语言的可空性特点36.Kotlin语言的安全调用操作符37.在Kotlin中使用带let...

  • 使用 Kotlin 进行 Android 开发

    使用 Kotlin 进行 Android 开发 Kotlin 非常适合开发 Android 应用程序,将现代语言的...

  • Kotlin——基础类型

    Kotlin语言的类型 Kotlin语言与Java相同,也是一门强类型的语言: 所有的变量必须先声明后使用 指定类...

  • kotlin协程系列 一 :对协程的介绍

    作为一名java语言使用者,使用kotlin已经一年有余。私认为kotlin是java语言的装饰者:在大结构上类似...

网友评论

      本文标题:使用kotlin语言30条须知

      本文链接:https://www.haomeiwen.com/subject/lrlujqtx.html