Function Signature
看一个函数签名 inline fun <reified T : Comparable<T>, R : Any> Collection<T>.complexTransform( crossinline predicate: (T) -> Boolean = { true }, noinline keySelector: (T) -> String, transform: T.() -> R? ): Map<String, List<R>> where T : CharSequence 这个函数的意思是: 给 Collection 添加一个扩展方法 T 必须能比较大小,且是字符序列,且支持泛型具体化 R 不能是 null 类型 接收三个函数参数:过滤条件、键选择器、转换器 返回按键分组的转换结果 记录 返回类型(最简单的部分) : Map<String, List<R>> 返回一个 Map,键是String,值是List<R> 函数名和接收者 Collection<T>.complexTransform Collection<T>. 表示这是扩展函数,意思是给 Collection 类型"加"了一个方法,可以这样调用:myList.complexTransform(...) 泛型参数 <reified T : Comparable<T>, R : Any> reified T - 泛型具体化,可以在运行时知道 T 的具体类型 : Comparable<T> - T 必须能够比较大小 where T : CharSequence - 额外约束,T 还必须是字符序列 R : Any - R 不能是 null 类型 参数列表 参数 1: ...