如何查找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。打开即可。