我试图重新从实现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函数?
我希望能够通过两个点(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个.
我有些人需要再次循环遍历这两个循环,但由于我不知道哪个方向实际上是循环(减少或增加),所以我不能只在循环中添加/减去一个循环.
任何帮助,将不胜感激!