Форум программистов, компьютерный форум CyberForum.ru

Не могу переписать модель для калькулятора Swift 3.0.1 - Swift

Восстановить пароль Регистрация
 
IpHuman
 Аватар для IpHuman
13 / 13 / 1
Регистрация: 28.01.2015
Сообщений: 24
13.12.2016, 19:34     Не могу переписать модель для калькулятора Swift 3.0.1 #1
Есть данная рабочая модель калькулятораю:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import Foundation
 
 class CalculatorHead
{
    private var accumulator = 0.0
 
    func set0perand(operand: Double) {
        accumulator = operand
    }
    private var operations: Dictionary <String, Operation> = [
        "ПЂ" : Operation.Constant(M_PI), //символ пи
        "e" : Operation.Constant(M_E),
        "±" : Operation.UnaryOperation({ -$0}),
        "Sqrt" : Operation.UnaryOperation(sqrt),
        "cos" : Operation.UnaryOperation(cos),
        "*": Operation.BinaryOperation({ $0 * $1 }),
        "/": Operation.BinaryOperation({ $0 / $1 }),
        "+": Operation.BinaryOperation({ $0 + $1 }),
        "-": Operation.BinaryOperation({ $0 - $1 }),
        "=": Operation.Equals
    ]
    private enum Operation {
        case Constant(Double)
        case UnaryOperation((Double) -> Double)
        case BinaryOperation((Double, Double) -> Double)
        case Equals
    }
    
    func perform0peration(symbol: String) {
        if let operation = operations[symbol]{
            switch operation{
            case .Constant(let value):
                accumulator = value
            case .UnaryOperation(let function):
                accumulator = function(accumulator)
            case .BinaryOperation(let function):
                executePendingBinaryOperation()
                pending = PendingBinaryOperationInfo(binaryFunction: function, fistOperand: accumulator)
            case .Equals:
                executePendingBinaryOperation()
            }
        }
    }
    
    private func executePendingBinaryOperation()
    {
        if pending != nil {
            accumulator = pending!.binaryFunction(pending!.fistOperand, accumulator)
            pending = nil
        }
    }
    
    private var pending: PendingBinaryOperationInfo?
    
    
    private struct PendingBinaryOperationInfo{
        var binaryFunction: (Double, Double) -> Double
        var fistOperand: Double
    }
    
    var result: Double {
        get {
            return accumulator
        }
    }
}
Помогите переписать код что б он соответствовал такой структуре модели, котороя использует протокол і методы:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
enum BinaryOperation: String {
    case Plus = "+"
    case Minus = "-"
    case Mul = "*"
    case Div = "/"
}
 
enum UtilityOperation: String {
    case Dot = "."
    case Equal = "="
}
 
enum UnaryOperation: String {
    case Cos = "cos"
    case Sqrt = "Sqrt"
}
 
protocol CalcBrainInterface {
    func digit(value: Double)
    func binary(operation: BinaryOperation)
    func unary(operation: UnaryOperation)
    var result: ((Double?, Error?) -> ())? {get set}
    var result1: Double {get}
}
 
class CalculatorHead: CalcBrainInterface
{
 
    private var accumulator = 0.0
    var operandOne: Double?
    var operandTwo: Double?
    
    var value: Double?
    
    
    func digit(value: Double) {
        if operandOne == nil {
            operandOne = value
        } else if operandTwo == nil {
            operandTwo = value
        }
    }
    
    func binary(operation: BinaryOperation) {
        switch operation {
        case .Plus:
            
        case .Minus:
            
        case .Div:
            
        case .Mul:
            
            
        default:
            break
        }
        
    }
    
    func unary(operation: UnaryOperation) {
        switch operation {
        case .Cos:
        
        case .Sqrt:
        default:
            break
        }
        
    }
    
    func utility(operation: UtilityOperation) {
        switch operation {
        case .Dot:
        case .Equal:
            result?(value, nil)
        default:
            break
        }
        
    }
    
    var result: ((Double?, Error?)->())?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2016, 19:34     Не могу переписать модель для калькулятора Swift 3.0.1
Посмотрите здесь:

Документация SWIFT Swift
Необходимость Swift для не очень опытного разработчика Swift
Потоки в Swift Swift
Массив Swift Swift
Swift 2D Движок для написания игры на SWIFT
Swift Swift, what that?
Swift Казалось бы просто Swift
Swift Swift for Windows
Swift Swift и бд
Swift Swift и MySQL
Swift Ошибка в коде ,не могу разобраться Swift 2
Кнопка в Swift Swift

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
13.12.2016, 19:52     Не могу переписать модель для калькулятора Swift 3.0.1 #2
IpHuman, раз на бесткоре взяли кусок кода, так почему же там и ответ не найти?
IpHuman
 Аватар для IpHuman
13 / 13 / 1
Регистрация: 28.01.2015
Сообщений: 24
13.12.2016, 20:08  [ТС]     Не могу переписать модель для калькулятора Swift 3.0.1 #3
Ryuk, вообще-то это c первоисточника Стэнфордского курса. Не знаю я ваших бесткоров.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
13.12.2016, 22:57     Не могу переписать модель для калькулятора Swift 3.0.1 #4
IpHuman, тут есть перевод и ответы.
Yandex
Объявления
13.12.2016, 22:57     Не могу переписать модель для калькулятора Swift 3.0.1
Ответ Создать тему
Опции темы

Текущее время: 06:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru