2015-08-29 3 views
-1

Я пытаюсь сделать калькулятор с помощью Swift по версии MVC. однажды я попросил кого-нибудь помочь мне, и они дали мне этот код кода, который я действительно не понимаю, а затем перечисляю часть и особенно случаи, вложенные в перечисление. В другом слове, что мы подразумеваем подSwift: Основной синтаксис

case UnaryOperation (String,Double -> Double) 
case BinaryOperation(String,(Double,Double)-> Double) 

первая часть, что один из приемных аргументов является String сделать довольно смысл, но вторая часть делает меня совершенно запутать

class CalculatorBrain { 

    enum Op{ 

     case Operand (Double) 
     case UnaryOperation (String,Double -> Double) 
     case BinaryOperation(String,(Double,Double)-> Double) 

    } 

    var opStack = [Op]() 
    func pushOperand(Operand : Double){ 
     opStack.append(Op.operand(Operand)) 
    } 

} 
+0

Взгляните на бесплатную книгу Swift от Apple –

+0

BTW, «append» не является правильным. Вероятно, вы хотите что-то вроде: 'func pushOperand (operand: Double) { opStack.append (Op.Operand (операнд)) }' – Rob

ответ

0

Учитывая эти два:

case UnaryOperation (String, Double -> Double) 
case BinaryOperation (String, (Double,Double) -> Double) 

Это просто означает, что UnaryOperation имеет два «соответствующие значения», один из которых является String, а другой - замыкание (которое принимает Double в качестве параметра и возвращает Double). BinaryOperation - это то же самое, за исключением того, что его замыкание принимает два параметра, два Double.

См. Раздел Enumerations (в частности раздел «Связанные значения») и Closures главы от Язык быстрого программирования.

Смежные вопросы