Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 我得到了一个未解析的标识符,即使我有一个变量的let_Swift - Fatal编程技术网

Swift 我得到了一个未解析的标识符,即使我有一个变量的let

Swift 我得到了一个未解析的标识符,即使我有一个变量的let,swift,Swift,我在结构PendingBinaryOperation中设置了常量calculationError 我创建了pendingBinaryOperation类型的变量pendingBinaryOperation 我在case语句中得到一个错误,即calculationError是一个未解析的标识符。代码部分如下 mutating func performOperation(_ symbol:String){ if let currentOperation = operations[symbol

我在结构PendingBinaryOperation中设置了常量calculationError 我创建了pendingBinaryOperation类型的变量pendingBinaryOperation 我在case语句中得到一个错误,即calculationError是一个未解析的标识符。代码部分如下

mutating func performOperation(_ symbol:String){
    if let currentOperation = operations[symbol] {
        switch currentOperation {
        case .nullOperation(let function, let nullDiscription):
            accumulator = (function(), nullDiscription, nil)
        case .constant(let value):
            accumulator = (value,symbol, nil)
        case .unaryOperation(let function, let unaryDescription, let unaryMemory):
            if accumulator != nil {
                accumulator = (function(accumulator!.digit), unaryDescription(accumulator!.description),
                unaryMemory(accumulator!.digit))
            }
        case .binaryOperation(let binaryFunction,
                              let binaryDescription,
                              let binaryError):
            if accumulator != nil {
                doAPendingBinaryOperation()
                resultIsPending = true
                pendingBinaryOperation = PendingBinaryOperation(
                    mathFunction: binaryFunction,
                    calculationDescription:binaryDescription,
                    firstOperand: accumulator!.digit,
                    descriptionOperand:(accumulator?.description)!,
 THIS LINE GIVES THE ERROR ->binaryError: calculationError) 
                accumulator = nil
            }
        case .equals:
            doAPendingBinaryOperation()
            resultIsPending = false
        }
    }
}

private var pendingBinaryOperation:PendingBinaryOperation?

struct PendingBinaryOperation {
    let calculationError: (Double, Double) -> String
    let mathFunction: (Double, Double) -> Double
    let calculationDescription: (String, String) -> String
    let firstOperand: (Double)
    let descriptionOperand:(String)
    func perform(with secondOperand:(Double)) -> Double {
        return (mathFunction(firstOperand, secondOperand))
    }
    func performDecription(with secondOperan:(String)) -> String {
        return (calculationDescription(descriptionOperand, secondOperan))
    }
}

Swift中的结构会自动生成一个成员初始值设定项,这就是您在这里用来初始化
PendingBinaryOperation
。这要求在初始值设定项中设置所有属性,包括
binaryError

您试图将
calculationError
作为
binaryError
参数的值传递-这是不可能的,因为
calculationError
在此范围内不可用(并且没有值)


如果不想设置
二进制错误
,则必须放弃使用memberwise初始值设定项。这通常意味着为添加的
PendingBinaryOperation
属性提供一个初始值,并使用正常的
init
(即
PendingBinaryOperation()
)。

根据您显示的代码,
PendingBinaryOperation
的构造函数是:

PendingBinaryOperation(calculationError: (Double, Double) -> String, mathFunction: (Double, Double) -> Double, calculationDescription: (String, String) -> String, firstOperand: (Double), descriptionOperand: (String))
但是你在打电话:

PendingBinaryOperation(mathFunction: (Double, Double) -> Double, calculationDescription: (String, String) -> String, firstOperand: (Double), descriptionOperand:(String), binaryError: ??)
如您所见,参数的顺序都是错误的,并且您有一个名为
binaryError
的参数,该参数在类型中不存在


我猜您需要将
binaryError:calculationError
反转为
calculationError:binaryError
,并重新排序参数,使其正确。

我将您的代码复制/粘贴到游乐场中,几乎每一行都被标记为错误。您可以发布只产生您遇到问题的错误的代码吗?