Kotlin List尾部功能

Abd*_*lat 20 kotlin kotlin-extension

我试图找到一个尾部功能,List<T>但我找不到任何.我最终这样做了.

fun <T> List<T>.tail() = this.takeLast(this.size -1)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Vla*_*nov 37

Kotlin没有内置List<T>.tail()函数,因此实现自己的扩展函数是唯一的方法.虽然您的实现非常好,但可以简化一下:

fun <T> List<T>.tail() = drop(1)
Run Code Online (Sandbox Code Playgroud)

或者,您可以定义扩展属性,而不是扩展功能:

val <T> List<T>.tail: List<T>
  get() = drop(1)

val <T> List<T>.head: T
  get() = first()
Run Code Online (Sandbox Code Playgroud)

然后使用它像:

val list = listOf("1", "2", "3")
val head = list.head
val tail = list.tail
Run Code Online (Sandbox Code Playgroud)

  • 如果你有一个你不想复制列表的情况(在许多情况下很好,CPU缓存和较小的列表都没问题),那么请查看Java标准`sublist`以获取扩展名https:// docs的变体. oracle.com/javase/7/docs/api/java/util/List.html#subList(int,%20int)(根据@hotkey在下面的评论中) (7认同)