-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCommand.swift
More file actions
executable file
·64 lines (56 loc) · 1.34 KB
/
Command.swift
File metadata and controls
executable file
·64 lines (56 loc) · 1.34 KB
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
//
// Command.swift
// Calc
//
//
import UIKit
enum CommandType
{
case Divide
case Multiply
case Subtract
case Add
}
class Command: NSObject
{
var type: CommandType
var repeating = false
let leftValue: CalcValue
init(type: CommandType, leftValue: CalcValue) {
self.type = type
self.leftValue = leftValue
super.init()
}
override var debugDescription: String {
get {
return leftValue.debugDescription + " " + operatorSymbol
}
}
var operatorSymbol : String {
get {
switch type {
case .Divide: return "÷"
case .Multiply: return "×"
case .Subtract: return "-"
case .Add: return "+"
}
}
}
var canRepeat : Bool {
get {
if !leftValue.canRepeatCommands { return false }
switch type {
case .Multiply, .Add: return true
default : return false
}
}
}
func executeWithNewValue(newValue: CalcValue) -> CalcValue? {
switch type {
case .Divide: return leftValue / newValue
case .Multiply: return leftValue * newValue
case .Subtract: return leftValue - newValue
case .Add: return leftValue + newValue
}
}
}