小编M K*_*ane的帖子

Kotlin - 如何递归调用lambda函数

我试图重新从实现linrec功能这里在科特林.以下是Kotlin目前的情况:

fun <A, B> linrec(indivisible: (List<A>) -> Boolean,
                  value: (List<A>) -> B,
                  divide: (List<A>) -> List<List<A>>,
                  combine: (A, B) -> B
                  ) : (List<A>) -> B {
  val myfunc: (List<A>) -> B = { input ->
    if (indivisible(input)) {
      value(input)           
    } else {
      val split = divide(input)
      val left = split[0][0]
      val right = myfunc(split[1])  // Error
      combine(left, right)   
    }
  }
  return myfunc
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行代码时,IntelliJ给出了以下错误:

Error:(40, 19) Kotlin: Unresolved reference: myfunc
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何自己调用lambda函数?

recursion lambda kotlin

4
推荐指数
1
解决办法
1769
查看次数

从x1,y1到x2,y2循环,无论它们是以何种顺序

我希望能够通过两个点(p1,p2)选择图像的一部分.我的问题是我想使用相同的循环,无论它们是以什么顺序.

现在我有这个:

for (int x = p1.X; x != p2.X; x += Math.Sign(p2.X - p1.X))
        {
            for (int y = p1.Y; y != p2.Y; y += Math.Sign(p2.Y - p1.Y))
            {
                MessageBox.Show(String.Format("{0} {1}", x, y));
            }
        }
Run Code Online (Sandbox Code Playgroud)

有了这个循环,我没有得到所有的数字:例如,从1/1到3/3仅有2到2个.

我有些人需要再次循环遍历这两个循环,但由于我不知道哪个方向实际上是循环(减少或增加),所以我不能只在循环中添加/减去一个循环.

任何帮助,将不胜感激!

c#

1
推荐指数
1
解决办法
120
查看次数

标签 统计

c# ×1

kotlin ×1

lambda ×1

recursion ×1