【发布时间】:2018-08-22 17:26:39
【问题描述】:
最近我在 kotlin 中使用列表,并且有以下 sn-p:
a = listOf(1, 2, 3, 4)
println(a[-2])
当然这会导致IndexOutOfBoundsException,所以我认为扩展此功能会很好。所以我认为可以覆盖List 类中的get 运算符:
operator fun <T> List<T>.get(index: Int): T =
// Here this should call the non-overridden version of
// get.
get(index % size)
我知道扩展只是静态方法,因此不能被覆盖,但是有没有办法可以实现这样的目标?
当然你可以创建另一个函数
fun <T> List<T>.safeGet(index: Int): T = get(index % size)
但我想知道是否有其他方法。
(我知道index % size 是一种非常天真的方式来做我想做的事,但这不是我的问题的重点,并且使代码更小。)
编辑
当我写这个问题时,我认为% 运算符会在右侧为正数时始终返回正数 - 就像在 python 中一样。我在这里保留原始问题只是为了保持一致。
【问题讨论】:
标签: kotlin