将嵌套函数返回值与父函数参数进行比较

时间:2017-06-29 22:22:13

标签: swift

当我遇到函数实验室中的最后一个问题时,运行Swift App Development课程。

想法是编写一个函数,它接受4个Double参数并返回一个String,同时嵌套一个前面的函数,它共享3个相同的参数并返回一个Double。 Parent Function比较嵌套func的返回值,并将其与第4个参数(小于)进行比较,然后返回2个字符串中的一个。

func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
    func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
        let predictedFinish = (currentTime / currentDistance) * totalDistance
        return predictedFinish
    }
    if calculatePace() <= goalTime {
        print("Keep it up!")
    } else {
        print("You've got to push harder!")
    }
}

calculatePace()&lt; = goalTime让我绊倒了。我得到的错误是:缺少参数的参数。我尝试过引用的预测.Finish。我得到错误使用未解析的标识符。我试过打电话给整个

calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double)

我得到的错误是:无法转换类型的值&#39; Double.Type&#39;预期参数类型&#39; Double&#39;请记住,这是一个初学者班级,所以我可能会过度思考这个问题。有线索吗?

1 个答案:

答案 0 :(得分:1)

有两个问题导致此代码无法编译。 1.你试图调用不存在的calculatePace()(实际函数有3个参数),2。你实际上没有返回String。解决了这两个问题之后,这段代码对我来说很好。

func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
        func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
            let predictedFinish = (currentTime / currentDistance) * totalDistance
            return predictedFinish
        }
        if calculatePace(currentDistance: currentDistance, totalDistance: totalDistance, currentTime: currentTime) <= goalTime {
            return "Keep it up!"
        } else {
            return "You've got to push harder!"
        }
    }