在函数内部调用函数后,如何在F#中重复该函数?

时间:2018-07-26 00:01:41

标签: function recursion f#

我有一个游戏,您可以执行某些操作,然后在完成操作后,您可以再次执行一系列操作,但是一旦程序结束,完成操作后,我认为这是一个递归函数,因此可以保留去。

这不是我的游戏的一部分,而只是一个演示,该程序要求输入一个字符串,然后完成。它不应该继续要求一个字符串吗,我该怎么做呢?我还尝试了回调f1函数内部的递归函数,但是f1当然不知道它的存在。

private fun getTargetXAndY(): Pair<Int, Double> {
    var viewHeight = 0
    var viewWidth = 0
    var viewPosX = 0F
    val viewMatcher = onView(withId(R.id.keyboardLayout))
    viewMatcher.check { view, _ ->
        viewWidth = view.width
        viewHeight = view.height
        viewPosX = view.x
    }

    val keyboardKeyWidthPercent = 0.333
    val keyboardRowsCount = 3

    val keyboardButtonWidthQuarter = (viewWidth * keyboardKeyWidthPercent) / 4
    val keyboardButtonHeightHalf = (viewHeight / keyboardRowsCount) / 2

    val viewTargetY = viewHeight - keyboardButtonHeightHalf
    val viewTargetX = (viewPosX + viewWidth) - keyboardButtonWidthQuarter
    return Pair(viewTargetY, viewTargetX)
}

1 个答案:

答案 0 :(得分:1)

如注释中所述,您将@Nullable Integer定义为值而不是函数。之前已经在StackOverflow上对此进行了讨论,并且有good question and answer that covers this.

另一个问题是,您可能想从f2调用f2(以继续循环)以及从f1调用f1。为此,您可以使用f2语法将函数定义为相互递归:

let rec .. and