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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Swift Работа с Картами (яндекс) http://www.cyberforum.ru/swift/thread1861826.html
Вечер добрый!) 1. Столкнулся с проблемой в реализации действия. Хочу реализовать перенаправление в "Яндеск Навигатор" на примере приложения ЛУКойла. Никакой инфы найти не смог(( Дайте наводку, в каком направлении думать)) http://s05.***********/i178/1611/17/3a9ad227fd9f.jpg 2. Как создать много точек на гугл карте, не описывая каждую отдельно, а при помощи массива координат? Буду...
Swift Чем отличается Замыкание от Функции в Swift 3.0 Смотрел много видео по замыканиям. Все в голос говорят:"Да , замыкание очень похоже на функцию", но хоть убей, не понимаю , чем они отличаются. Что я могу сделать с замыканием , чего не могу с функцией? И наоборот, какие есть особенности у функции? Буду очень благодарен за ответ)) http://www.cyberforum.ru/swift/thread1861451.html
Swift Возведение в квадрат и другие математические функции в Swift 3.0
Ребята, подскажите, как возвести в квадрат число в языке Swift? А то не могу найти ни функции , ни методы, ни библиотеки с математическими функциями
Протокол связи с сервером Swift
Доброго дня друзья. У меня есть сервер и клиенты свяжутся с ним по TCP, написан клиент и сервер на Java. Захотелось еще сделать и мобильную версию клиента, изучаю азы Xcode и как мои поиски дали мне знать мобильные платформы не используют сокетов (не судите строго впервые пишу на смартфоны). И так как работает мой проект: 1. Клиент отправляет пакет серверу. 2. Сервер запишет его на базу....
Swift Отключение JavaScript http://www.cyberforum.ru/swift/thread1854223.html
Привет, у меня возникла такая надобность, отключить поддержку JavaScript в UIWebView, как это сделать? Возможно ли это? Если нет, то читал на StackOverFlow, что надо использовать WKWebView, но у меня почему-то не выходит, если ответите я покажу код.
Swift UIWebView Подскажите, пожалуйста, как в UIWebView сделать автоматически загружаемую страницу? Нужен "браузер" с минимальным интерфейсом, который стразу показывает нужную страницу. Добавлено через 3 часа 18 минут Проблема решена, оказывается применять NSURL не нужно, как пишут во всех руководствах. Я решил это так: let url = URL(string: "https://m.vk.com") let requestObj = URLRequest(url:... подробнее

Показать сообщение отдельно
IpHuman
14 / 14 / 1
Регистрация: 28.01.2015
Сообщений: 26

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

13.12.2016, 19:34. Просмотров 662. Ответов 3
Метки (Все метки)

Есть данная рабочая модель калькулятораю:
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?)->())?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru