[英]In Kotlin, how do I create a list of lambdas where each lambda is of the type (Int) -> List? I'm getting destructuring declaration errors
我正在尝试在 Kotlin 中创建 lambda 列表,但出现以下编译时错误:
Destructuring declaration initializer of type Int must have a 'component1()' function
这是我的代码:
val pathXRanges = listOf<(Int) -> List<Int>>(
{(extX) -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList()}, // diagonal 1 (y = -x)
{(extX) -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList()}, // diagonal 2 (y = x)
{(extX) -> List(board.k * 2 - 2) { extX } }, // x = x
{(extX) -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList()} // y = y
)
差不多就是这样,任何帮助表示赞赏。 如果您需要澄清任何事情,请告诉我。
谢谢!
只需从extX
lambda 参数值中删除括号,即:
val pathXRanges = listOf<(Int) -> List<Int>>(
{ extX -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList() }, // diagonal 1 (y = -x)
{ extX -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList() }, // diagonal 2 (y = x)
{ extX -> List(board.k * 2 - 2) { extX } }, // x = x
{ extX -> ((extX - (board.k - 1))..(extX + board.k - 1)).toList() } // y = y
)
括号向编译器指示 lambda 参数应该被解构,并且应该调用参数的component1()
运算符 function 来为extX
。
当然, Int
没有component1()
function,因此报错:
Destructuring declaration initializer of type Int must have a 'component1()' function`.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.