gpt4 book ai didi

ios - Swift 不识别对函数的递归调用,认为它是局部变量

转载 作者:行者123 更新时间:2023-11-28 07:03:11 27 4
gpt4 key购买 nike

<分区>

我正在关注 iTunes 上的斯坦福 Swift 类(class)。我在第 3 课中,教授编写了一个递归函数来评估一堆运算符和操作数。

这是教授输入的代码:

class CalculatorBrain
{
private enum Op {
case Operand(Double)
case UnaryOperation(String, Double -> Double)
case BinaryOperation(String, (Double, Double) -> Double)
}

private var opStack = [Op]()

private var knownOps = [String:Op]()

init() {
knownOps["×"] = Op.BinaryOperation("×", *)
knownOps["+"] = Op.BinaryOperation("+", +)
knownOps["-"] = Op.BinaryOperation("-") { $1 - $0 }
knownOps["÷"] = Op.BinaryOperation("÷") { $1 / $0 }
knownOps["√"] = Op.UnaryOperation("√", sqrt)
}

func pushOperand(operand: Double) {
opStack.append(Op.Operand(operand))
}

func performOperation(symbol: String) {
if let operation = knownOps[symbol] {
opStack.append(operation)
}
}

private func evaluate(ops: [Op]) -> (result: Double?, remainingOps: [Op])
{
var remainingOps = ops
if !remainingOps.isEmpty {
let op = remainingOps.removeLast()
switch op {
case .Operand(let operand):
return (operand, remainingOps)
case .UnaryOperation(_, let operation):
let operandEvaluation = evaluate(remainingOps)
if let operand = operandEvaluation.result {
return (operation(operand), operandEvaluation.remainingOps)
}
case .BinaryOperation(_, let operation):
// code snipped
}
}
return (nil, ops)
}
}

我得到一个编译器错误,但他没有。

我得到的错误是在 let operandEvaluation = evaluate(remainingOps) 行。我收到错误消息“在声明之前使用局部变量‘evaluate’”

有谁知道我为什么会收到这个错误?它应该是对函数 evaluate 的递归调用,但编译器认为 evaluate 是一个局部变量。

我在 OS X 10.10.4 上使用 Xcode 6.4

谢谢!

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com