【发布时间】:2021-08-03 00:59:58
【问题描述】:
我尝试向高阶函数添加一个 lambda 表达式。但我的问题是: 如何实现 forEach 函数,列表中的每个元素与传递 函数操作调用?
import java.lang.IndexOutOfBoundsException
class LinkedList <T> {
data class Node<T>(val data: T, var next: Node<T>?)
private var first: Node<T>? = null
fun addFirst(data: T) {
val newNode = Node(data, first)
first = newNode
}
fun isEmpty() = first == null
fun clear(): Any {
return LinkedList<T>().clear()
}
fun get(index: Int): Any {
var position = 0
var runPointer = first
while (runPointer != null && position != index) {
position += 1
runPointer = runPointer.next
}
return runPointer?.data ?: throw IndexOutOfBoundsException()
}
fun forEach(action: (T) -> Unit) {
...
}
}
【问题讨论】:
-
与您实现
get的方式相同,但在runPointer.data上调用action -
我同意@al3c,您只需对循环时遇到的每个
runPointer.data调用操作即可。另外,clear()的合约是什么?这似乎真的很奇怪:它返回一个空列表,但对this列表没有任何作用。 -
你能给我看每个函数的例子吗,因为它不适合我
标签: kotlin lambda higher-order-functions