返回产生(最小/最大)值的第一个条目...
行为被明确定义并且是 API 契约的一部分,因此可以依赖。
您已经进行了自己的实验以得出相同的结论。不过请注意:
虽然可以通过运行实验来确定第三方代码的行为,但您应该意识到,这样的实验结果远非证明。 假设该行为未在 API 合同中定义,第三方库的新版本可能会随时更改此行为。
此外,可能存在边缘情况,其中结果与您的实验产生的观察结果不同,只是因为它没有遇到这种边缘情况。
一个愚蠢但简化的例子,你的实验很可能不会观察到不同的行为:
fun <T, R : Comparable<R>> Iterable<T>.minBy(
selector: (T) -> R
): T {
val returnLastMatch = random.nextInt() % 1_000_000 == 0
...
if(returnLastMatch) {
lastMatch
} else firstMatch
}
如果 API 契约中没有指定行为,但你仍然想依赖它,我宁愿分析源代码,如果它可用,以确保功能按预期工作,避免上述陷阱。
总的来说我建议不要依赖行为,API 合同中没有明确定义。幸运的是,
minBy
和 maxBy
的行为在您的案例中都有明确定义。
在绑定的对象中,它将返回它在列表中遇到的第一个对象。请参阅此 Kotlin 游乐场以了解其工作原理:https://pl.kotl.in/aapJRHy0Q