- 原文地址: Kotlin Demystified: Understanding Shorthand Lambda Syntax
- 原文作者: Nicole Borrelli
- 译文出自: 掘金翻译计划
- 本文永久链接: github.com/xitu/gold-m…
- 译者: androidxiao
文章封面摄影: Stefan Steinbauer ,来自 Unsplash 。
在奥地利旅行期间,我参观了维也纳的奥地利国家图书馆。特别是国会大厅,这个令人惊叹的空间感觉就像印第安纳琼斯电影中的一些东西。房间周围的空间是这些门被装在架子上,很容易想象它们背后隐藏着什么样的秘密。
然而,事实证明,它们只是简单的图书馆。
让我们假设我们有一个应用程序来跟踪库中的书籍。有一天,我们想知道这个系列中最长和最短的书是什么。之后,我们编写代码,允许我们找到这两个:
val shortestBook = library.minBy { it.pageCount }val longestBook = library.maxBy { it.pageCount }
复制代码
完美!但这让我感到疑惑,这些方法是如何工作的?
it
是怎么知道的,只是写了
it.pageCount
,到底该怎么做呢?
我做的第一件事就是定义
minBy
和
maxBy
,这两者都是在
Collections.kt
。由于它们几乎完全相同,所以让我们来看看
maxBy
,它从 1559 行开始。
那里的方法是在
[Iterable](https://developer.android.com/reference/java/lang/Iterable)
接口上构建的,但是如果我们做一个小的重写来使用
[Collection](https://developer.android.com/reference/java/util/Collection)
s,也许将一些变量的重命名变的更冗长,更容易理解: