-
Notifications
You must be signed in to change notification settings - Fork 0
/
day2_swift_syntax.swift
149 lines (120 loc) · 5.46 KB
/
day2_swift_syntax.swift
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
// Import necessary libraries here
import UIKit // provides the infrastructure for your applications, allows all the UI elements to exist
/* --------------------------------------------------------------------------------------------------------- */
/* FUNCTIONS */
// defining functions
func myFunction(parameter: String) // can access the variable parameter between braces, but nowhere else
{
print(parameter)
}
// remember to call the function outside of your definition! you can call functions in multiple places
myFunction(parameter: "hello!") // prints: hello!
// functions can be void (no return value), as in the previous example
// defining functions with return values
func myFunction(num: Int, multiplier: Int) -> Int
{
return num*multiplier
}
// set value of a constant or variable to the function call
let functionReturnValue = myFunction(num: 3, multiplier: 4)
print (functionReturnValue) // prints: 12
/* --------------------------------------------------------------------------------------------------------- */
/* VARIABLE SCOPE */
// Global variables: accessible from anywhere in your code, declared outside of all functions and classes
var myVar : Int
func myFunction()
{
// myVar is accessible here
myVar = 4 // sets the variable value
}
print(myVar) // ERROR: myVar doesn't have a value yet!
myFunction()
print(myVar) // prints: 4
// Parameters: accessible only within the function, but passed into the function
func myFunction(parameter: String)
{
print(parameter)
}
print(parameter) // ERROR: parameter is not a valid variable outside of the function definition
myFunction(parameter: "Hello, World!") // prints: Hello, World!
print(parameter) // ERROR: parameter is not a valid variable outside of the function definition
// Local variables: accessible only within the function, intialized within the function
func myFunction()
{
let myVar : Int = 4
print(myVar)
}
print(myVar) // ERROR: variable does not exist outside of the function
myFunction() // prints: 4
print(myVar) // ERROR: variable does not exist outside of the function
/* --------------------------------------------------------------------------------------------------------- */
/* OBJECT ORIENTED PROGRAMMING: */
// defining classes
class myClass {
// member variables or constants that are associated with this class
var myVar : Int // if you want to set this value when you create the object
let secondVar : Int = 4 // if it's always going to be a specific value (in this case, 4)
var myOtherVar : Int = 4 // if you want a default
// member functions, a.k.a. methods
// can only call these functions on an object
func myMemberFunction() {
// can update variables here
myVar += 6 // adds 6 to the current value of myVar
}
func printVars() {
print("myVar: \(myVar)")
print("secondVar: \(secondVar)")
print("myOtherVar: \(myOtherVar)")
}
// initializer (if this is not here, the compiler creates a default constructor for you)
// because there is an init function, this gets called every time you do myClass(....)
init(firstVariable: Int, myOtherVar: Int)
{
myVar = firstVariable
self.myOtherVar = myOtherVar // how to resolve complications with two of the same variable name. basically, self refers to the class
}
}
// create an object/instance of the class a.k.a. using a class as a template
var myObject = myClass(firstVariable: 4, myOtherVar: 3) // myObject.myVar = 4, myObject.myOtherVar = 3
myMemberFunction() // ERROR: this cannot run without being connected to an object
myObject.myMemberFunction() // updates myObject.myVar from 4 to 10
myObject.printVars() // prints: myVar: 10
// secondVar: 4
// myOtherVar: 3
myObject.myMemberFunction() // updates myObject.myVar from 10 to 16
myObject.printVars() // prints: myVar: 16
// secondVar: 4
// myOtherVar: 3
/* --------------------------------------------------------------------------------------------------------- */
/* INHERITANCE */
// This is why you'll have things like override func viewDidLoad().
// Your current ViewController class inherits from UIViewController,
// and the UIViewController class has its own viewDidLoad() function.
class myParentClass {
func myFunction() {
print("I'm the parent class!")
}
func myOtherFunction() {
print("I get inherited.")
}
}
class myClass: myParentClass {
override func myFunction() {
print("I'm the child class!")
}
func myOwnFunction() {
print("I'm not inherited.")
}
}
let instanceOfParentClass = myParentClass()
let instanceOfChildClass = myClass()
instanceOfParentClass.myFunction() // prints: I'm the parent class!
instanceOfChildClass.myFunction() // prints: I'm the child class!
// notice that these two print the same thing, and this function does not have to be redefined in the child class
// for the child class to use it
instanceOfParentClass.myOtherFunction() // prints: I get inherited.
instanceOfChildClass.myOtherFunction() // prints: I get inherited.
// notice the difference between the following and the above
instanceOfParentClass.myOwnFunction() // ERROR: the parent class does not have anything that the child class has
instanceOfChildClass.myOwnFunction() // prints: I'm not inherited.
/* --------------------------------------------------------------------------------------------------------- */