Swift 我得到了一个未解析的标识符,即使我有一个变量的let
我在结构PendingBinaryOperation中设置了常量calculationError 我创建了pendingBinaryOperation类型的变量pendingBinaryOperation 我在case语句中得到一个错误,即calculationError是一个未解析的标识符。代码部分如下Swift 我得到了一个未解析的标识符,即使我有一个变量的let,swift,Swift,我在结构PendingBinaryOperation中设置了常量calculationError 我创建了pendingBinaryOperation类型的变量pendingBinaryOperation 我在case语句中得到一个错误,即calculationError是一个未解析的标识符。代码部分如下 mutating func performOperation(_ symbol:String){ if let currentOperation = operations[symbol
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
,并重新排序参数,使其正确。我将您的代码复制/粘贴到游乐场中,几乎每一行都被标记为错误。您可以发布只产生您遇到问题的错误的代码吗?