kotlin - 在 indexOf(...) 中返回 -1 而不是 null 有什么好处?
问题描述
调用List.indexOf(...)
时,返回-1
而不是null
值不存在有什么好处?
例如:
val list = listOf("a", "b", "c")
val index = list.indexOf("d")
print(index) // Prints -1
如果不是索引,结果null
不是更干净吗?如果它有一个可选的返回类型,那么它将与 elvis 运算符:?
以及诸如index?.let { ... }
.
没有匹配-1
项时返回而不是返回有什么好处?null
解决方案
只是猜测,但我可以想到两个原因:
第一个原因是为了兼容 Java 及其List.indexOf
正如文档所述:
返回: 此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1
第二个原因是与kotlins binarySearch具有相同的数据类型。
返回元素的索引,如果它包含在指定范围内的列表中;否则,反转插入点(-insertion point - 1)。插入点被定义为应该插入元素的索引,因此列表(或列表的指定子范围)仍然保持排序状态。
如果不存在,负值实际上包含在哪里插入元素的附加信息。但是由于普通indexOf
方法适用于未排序的集合,因此您无法推断插入位置。
推荐阅读
- git - Git rebase 说明
- javascript - 词法范围只能在花括号之间创建吗?
- javascript - ReactJS 没有渲染孩子
- angular - 如何使用 getDownloadURL() (带令牌)获取完整的 url?
- excel - 如何在活动单元格公式中使用相对引用
- cordova - HTTP 请求仅适用于浏览器,不适用于真正的 Android 设备
- android - 片段覆盖整个android编辑屏幕
- excel - 在一行中查找文本,然后在该列中查找文本
- javascript - 移动端的 Highchart(触摸可缩小和放大) - LineChart
- c# - Microsoft.Reporting.WebForms 不会将报告呈现为 CSV