分享Kotlin的一个小技巧

简介: 分享Kotlin的一个小技巧

如何查找kotlin源码中某个类的扩展方法?


我们都知道,kotlin提供了扩展方法的功能。我们无需继承一个类,就可以给该类提供一个新的方法。举个例子:

//给MutableList增加一个swap方法
fun MutableList<Int>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // 'this' corresponds to the list
    this[index1] = this[index2]
    this[index2] = tmp
}
//调用该方法
val list = mutableListOf(1, 2, 3)
list.swap(0, 2) // 'this' inside 'swap()' will hold the value of 'list'

那么问题来了。浩瀚源码中我如何查找一个类定义了哪些扩展方法。


比如说我想要查找String类定义了哪些扩展函数。快捷键 command + shift + o 输入 _Strings.kt。打开文件,部分代码如下。

public expect fun CharSequence.elementAt(index: Int): Char
/**
 * Returns a character at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this char sequence.
 * 
 * @sample samples.collections.Collections.Elements.elementAtOrElse
 */
@kotlin.internal.InlineOnly
public inline fun CharSequence.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char {
    return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)
}

比如说我想要查找Array类定义了哪些扩展函数。快捷键 command + shift + o 输入 _Arrays.kt。打开文件,该文件全部都是定义了Array的扩展方法。部分代码如下。


@kotlin.internal.InlineOnly
public inline operator fun <T> Array<out T>.component1(): T {
    return get(0)
}

比如说我想要查找Collection类定义了哪些扩展函数。快捷键 command + shift + o 输入 _Collections.kt。打开文件,该文件全部都是定义了Collection类的扩展方法。部分代码如下。

@kotlin.internal.InlineOnly
public inline operator fun <T> List<T>.component1(): T {
    return get(0)
}

结论


在koltin源码中如果想查找某个类XXX的扩展方法。快捷键 command + shift + o 输入 _XXXs.kt。打开即可。


相关文章
|
7月前
|
设计模式 Java Kotlin
Kotlin 学习笔记(三)—— Kotlin 的动态代理你会写吗?(下)
Kotlin 学习笔记(三)—— Kotlin 的动态代理你会写吗?(下)
66 1
|
2月前
|
设计模式 安全 Java
Kotlin
Kotlin
17 0
|
7月前
|
设计模式 Java Kotlin
Kotlin 学习笔记(三)—— Kotlin 的动态代理你会写吗?(上)
Kotlin 学习笔记(三)—— Kotlin 的动态代理你会写吗?(上)
39 0
|
9月前
|
安全 Java Android开发
kotlin学习和常用知识
@[TOC](目录) Kotlin 是一种由 JetBrains 公司开发的静态类型编程语言,旨在为 Java 开发者提供一种更加安全、简洁、易于使用的编程语言。Kotlin 可以编译成 Java 字节码,因此可以在 Java 虚拟机(JVM)上运行。下面是关于 Kotlin 的详细解释、发展历史、语法学习和代码解读。 # 一、Kotlin 详解 1. 基本概念 Kotlin 是一种静态类型语言,这意味着在编译时会对代码进行类型检查,从而减少了在运行时的错误。Kotlin 也支持面向对象编程,具有封装、继承、多态等特性。此外,Kotlin 还支持函数式编程,具有高阶函数、Lambda 表达式、
136 0
|
Java Kotlin
学习Kotlin一
学习Kotlin一
69 0
学习Kotlin一
|
JavaScript 前端开发 Java
浅谈Kotlin中的函数
本文简单谈下Kotlin中的函数,包括表达式函数体,命名参数,默认参数,顶层函数,扩展函数,局部函数,Lambda表达式,成员引用,with/apply函数等。从例子入手,从一般写法到使用特性进行简化,再到原理解析。
1112 0
|
Java 编译器 Kotlin
Kotlin之DataClass学习
Kotlin之DataClass学习
159 0
|
Java Android开发 Kotlin
【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
452 0
|
SQL 前端开发 JavaScript
Kotlin的分享
在公司部门小组中做了一次kotlin的分享 # kotlin简介 Kotlin是由JetBrains公司(IDEA开发者)所开发的编程语言,其名称来自于开发团队附近的科特林岛。 多平台开发 JVM :Android; Server-Side Javascript:前端 Native(beta) :开发原生应用 windows、macos、linux Swift与Kotli
1503 0
Kotlin可控性探索
目录介绍 01.可空性 02.安全调用运算符:?. 03.Elvis运算符:?: 04.安全转换运算符:as? 05.非空断言:!! 06.let函数说明 07.可空类型的扩展 08.Java中判断方式 09.
1287 0