@@ -1,268 +1,268 @@
1−[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Person {[0m
2−[38;2;117;113;94m//[0m[38;2;117;113;94m We can define class property here[0m
[38;2;248;248;242m[0m
3−[3;38;2;102;217;239mvar[0m[38;2;248;248;242m age [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m25[0m[38;2;248;248;242m[0m
4−[38;2;117;113;94m//[0m[38;2;117;113;94m Implement Class initializer. Initializers are called when a new object of this class is created[0m
[38;2;248;248;242m[0m
5−[38;2;249;38;114minit[0m[38;2;248;248;242m() { [0m
6−[38;2;248;248;242m print(“A [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m instance of this [0m[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Person [0m[38;2;249;38;114mis[0m[38;2;248;248;242m created[0m[38;2;249;38;114m.[0m[38;2;248;248;242m”) [0m
7−[38;2;248;248;242m } [0m
8−[38;2;248;248;242m} [0m
9−[38;2;117;113;94m//[0m[38;2;117;113;94m We can now create an instance of class Person - an object - by putting parentheses after the class name[0m
[38;2;248;248;242m[0m
10−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m personObj [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Person()[0m
11−[38;2;117;113;94m//[0m[38;2;117;113;94m Once an instance of Person class is created we can access its properties using the dot “.” syntax.[0m
[38;2;248;248;242m[0m
12−[38;2;248;248;242mprint(“This person age [0m[38;2;249;38;114mis[0m[38;2;248;248;242m \(personObj[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage)”)[0m
13−[38;2;248;248;242m[0m
14−[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mFoundation[0m[38;2;248;248;242m[0m
15−[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Friend [0m[38;2;249;38;114m:[0m[38;2;248;248;242m Comparable {[0m
16−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m[0m
17−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m age [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m[0m
18−[38;2;248;248;242m [0m
19−[38;2;248;248;242m [0m[38;2;249;38;114minit[0m[38;2;248;248;242m(name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, age: [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m) {[0m
20−[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m=[0m[38;2;248;248;242m name[0m
21−[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m=[0m[38;2;248;248;242m age[0m
22−[38;2;248;248;242m }[0m
23−[38;2;248;248;242m}[0m
24−[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m<[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
25−[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m<[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m>[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
26−[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m>[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage[0m
27−[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
28−[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m==[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
29−[38;2;248;248;242m [0m[3;38;2;102;217;239mvar[0m[38;2;248;248;242m returnValue [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m[38;2;248;248;242m[0m
30−[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m (lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m==[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname) [0m[38;2;249;38;114m&&[0m[38;2;248;248;242m (lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m==[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage)[0m
31−[38;2;248;248;242m {[0m
32−[38;2;248;248;242m returnValue [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m[38;2;248;248;242m[0m
33−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
34−[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m returnValue[0m
35−[38;2;248;248;242m}[0m
36−[38;2;248;248;242m[0m
37−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend1 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m35[0m[38;2;248;248;242m)[0m
38−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend2 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m30[0m[38;2;248;248;242m)[0m
39−[38;2;248;248;242m [0m
40−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;248;248;240m\[0m[38;2;230;219;116mC[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mo[0m[38;2;230;219;116mb[0m[38;2;230;219;116mj[0m[38;2;230;219;116me[0m[38;2;230;219;116mc[0m[38;2;230;219;116mt[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mS[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mp[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m?[0m[38;2;230;219;116m [0m[38;2;230;219;116m([0m[38;2;230;219;116mf[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m1[0m[38;2;230;219;116m [0m[38;2;230;219;116m=[0m[38;2;230;219;116m=[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m2[0m[38;2;230;219;116m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
41−[38;2;248;248;242m[0m
42−[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46msayHelloWorld[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
43−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mH[0m[38;2;230;219;116me[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116m [0m[38;2;230;219;116mW[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116ml[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
44−[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
45−[38;2;117;113;94m//[0m[38;2;117;113;94m Call function[0m
[38;2;248;248;242m[0m
46−[38;2;248;248;242msayHelloWorld()[0m
47−[38;2;248;248;242m[0m
48−[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mprintOutFriendNames[0m[38;2;248;248;242m([0m[38;2;248;248;242mnames: [0m[3;38;2;166;226;46mString[0m[38;2;249;38;114m...[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
49−[38;2;248;248;242m [0m
50−[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m name [0m[38;2;249;38;114min[0m[38;2;248;248;242m names {[0m
51−[38;2;248;248;242m [0m
52−[38;2;248;248;242m print(name)[0m
53−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
54−[38;2;248;248;242m [0m
55−[38;2;248;248;242m}[0m
56−[38;2;117;113;94m//[0m[38;2;117;113;94m Call the printOutFriendNames with two parameters[0m
[38;2;248;248;242m[0m
57−[38;2;248;248;242mprintOutFriendNames([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
58−[38;2;117;113;94m//[0m[38;2;117;113;94m Call the function with more parameters[0m
[38;2;248;248;242m[0m
59−[38;2;248;248;242mprintOutFriendNames([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116ma[0m[38;2;230;219;116mx[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
60−[38;2;248;248;242m[0m
61−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m simpleClosure [0m[38;2;249;38;114m=[0m[38;2;248;248;242m {[0m
62−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116ms[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116mC[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
63−[38;2;248;248;242m}[0m
64−[38;2;117;113;94m//[0m[38;2;117;113;94m Call closure[0m
[38;2;248;248;242m[0m
65−[38;2;248;248;242msimpleClosure() [0m
66−[38;2;248;248;242m[0m
67−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m fullName [0m[38;2;249;38;114m=[0m[38;2;248;248;242m { (firstName:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, lastName:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m)[0m[38;2;249;38;114m->[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m [0m[38;2;249;38;114min[0m[38;2;248;248;242m[0m
68−[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m firstName [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m [0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m lastName[0m
69−[38;2;248;248;242m}[0m
70−[38;2;117;113;94m//[0m[38;2;117;113;94m Call Closure[0m
[38;2;248;248;242m[0m
71−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myFullName [0m[38;2;249;38;114m=[0m[38;2;248;248;242m fullName([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
72−[38;2;248;248;242mprint([0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116my[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mu[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m [0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mmyFullName[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
73−[38;2;248;248;242m[0m
74−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m]()[0m
75−[38;2;117;113;94m//[0m[38;2;117;113;94m Another way to create an empty dictionary[0m
[38;2;248;248;242m[0m
76−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary2:[[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;249;38;114m:[0m[38;2;248;248;242m][0m
77−[38;2;117;113;94m//[0m[38;2;117;113;94m Keys in dictionary can also be of type Int[0m
[38;2;248;248;242m[0m
78−[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary3 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m]()[0m
79−[38;2;248;248;242m[0m
80−[3;38;2;102;217;239mvar[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m][0m
81−[38;2;117;113;94m//[0m[38;2;117;113;94m print to preview[0m
[38;2;248;248;242m[0m
82−[38;2;248;248;242mprint(myDictionary)[0m
83−[38;2;117;113;94m//[0m[38;2;117;113;94m Add a new key with a value[0m
[38;2;248;248;242m[0m
84−[38;2;248;248;242mmyDictionary[[0m[38;2;230;219;116m"[0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116m_[0m[38;2;230;219;116mi[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116m5[0m[38;2;230;219;116mh[0m[38;2;230;219;116m7[0m[38;2;230;219;116mr[0m[38;2;230;219;116mu[0m[38;2;230;219;116m0[0m[38;2;230;219;116mt[0m[38;2;230;219;116mJ[0m[38;2;230;219;116mu[0m[38;2;230;219;116mr[0m[38;2;230;219;116mY[0m[38;2;230;219;116m8[0m[38;2;230;219;116mf[0m[38;2;230;219;116m7[0m[38;2;230;219;116mg[0m[38;2;230;219;116m5[0m[38;2;230;219;116ms[0m[38;2;230;219;116m6[0m[38;2;230;219;116mf[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m[0m
85−[38;2;117;113;94m//[0m[38;2;117;113;94m We should now have 3 key value pairs printed[0m
[38;2;248;248;242m[0m
86−[38;2;248;248;242mprint(myDictionary)[0m
87−[38;2;248;248;242m[0m
88−[3;38;2;102;217;239mvar[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m][0m
89−[38;2;117;113;94m//[0m[38;2;117;113;94m Loop through dictionary keys and print values[0m
[38;2;248;248;242m[0m
90−[38;2;249;38;114mfor[0m[38;2;248;248;242m (key,value) [0m[38;2;249;38;114min[0m[38;2;248;248;242m myDictionary {[0m
91−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;248;248;242m\([0m[38;2;248;248;242mkey[0m[38;2;248;248;242m)[0m[38;2;230;219;116m [0m[38;2;230;219;116m=[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mvalue[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
92−[38;2;248;248;242m}[0m
93−[38;2;248;248;242m [0m[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Friend {[0m
94−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m[0m
95−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m age [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m[0m
96−[38;2;248;248;242m [0m
97−[38;2;248;248;242m [0m[38;2;249;38;114minit[0m[38;2;248;248;242m(name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, age: [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m) {[0m
98−[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m=[0m[38;2;248;248;242m name[0m
99−[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m=[0m[38;2;248;248;242m age[0m
100−[38;2;248;248;242m }[0m
101−[38;2;248;248;242m}[0m
102−[38;2;248;248;242m[0m
103−[38;2;248;248;242m [0m[3;38;2;102;217;239mvar[0m[38;2;248;248;242m friends:[Friend] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [][0m
104−[38;2;248;248;242m [0m
105−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend1 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m30[0m[38;2;248;248;242m)[0m
106−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend2 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m35[0m[38;2;248;248;242m)[0m
107−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend3 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116mi[0m[38;2;230;219;116mc[0m[38;2;230;219;116mh[0m[38;2;230;219;116ma[0m[38;2;230;219;116me[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m21[0m[38;2;248;248;242m)[0m
108−[38;2;248;248;242m [0m
109−[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend1)[0m
110−[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend2)[0m
111−[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend3)[0m
112−[38;2;248;248;242m [0m
113−[38;2;248;248;242m printFriends(friends: friends)[0m
114−[38;2;248;248;242m [0m
115−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Get sorted array in descending order (largest to the smallest number)[0m
[38;2;248;248;242m[0m
116−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sortedFriends [0m[38;2;249;38;114m=[0m[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242msorted(by: { $[0m[38;2;190;132;255m0[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m>[0m[38;2;248;248;242m $[0m[38;2;190;132;255m1[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage })[0m
117−[38;2;248;248;242m printFriends(friends: sortedFriends)[0m
118−[38;2;248;248;242m [0m
119−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Get sorted array in ascending order (smallest to the largest number)[0m
[38;2;248;248;242m[0m
120−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sortedFriendsAscendingOrder [0m[38;2;249;38;114m=[0m[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242msorted(by: { $[0m[38;2;190;132;255m0[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m<[0m[38;2;248;248;242m $[0m[38;2;190;132;255m1[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage })[0m
121−[38;2;248;248;242m printFriends(friends: sortedFriendsAscendingOrder)[0m
122−[38;2;248;248;242m[0m
123−[38;2;248;248;242m[0m
124−[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mprintFriends[0m[38;2;248;248;242m([0m[38;2;248;248;242mfriends: [Friend][0m[38;2;248;248;242m)[0m[38;2;248;248;242m[0m
125−[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
126−[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m friendEntry [0m[38;2;249;38;114min[0m[38;2;248;248;242m friends {[0m
127−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mN[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mfriendEntry[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname[0m[38;2;248;248;242m)[0m[38;2;230;219;116m,[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mfriendEntry[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
128−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
129−[38;2;248;248;242m }[0m
130−[38;2;248;248;242m[0m
131−[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m[38;2;248;248;242m[0m
132−[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
133−[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
134−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
135−[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
136−[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewWillAppear[0m[38;2;248;248;242m([0m[38;2;248;248;242m_ animated: [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
137−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewWillAppear(animated)[0m
138−[38;2;248;248;242m [0m
139−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Create destination URL [0m
[38;2;248;248;242m[0m
140−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m documentsUrl:URL [0m[38;2;249;38;114m=[0m[38;2;248;248;242m FileManager[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m[38;2;249;38;114m.[0m[38;2;248;248;242murls([0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242mdocumentDirectory, [0m[38;2;249;38;114min[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242muserDomainMask)[0m[38;2;249;38;114m.[0m[38;2;248;248;242mfirst [0m[38;2;249;38;114mas[0m[38;2;248;248;242m URL[0m[38;2;249;38;114m![0m[38;2;248;248;242m[0m
141−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m destinationFileUrl [0m[38;2;249;38;114m=[0m[38;2;248;248;242m documentsUrl[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappendingPathComponent([0m[38;2;230;219;116m"[0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116mF[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116mj[0m[38;2;230;219;116mp[0m[38;2;230;219;116mg[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
142−[38;2;248;248;242m [0m
143−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mCreate URL to the source file you want to download[0m
[38;2;248;248;242m[0m
144−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m fileURL [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URL(string: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mh[0m[38;2;230;219;116mt[0m[38;2;230;219;116mt[0m[38;2;230;219;116mp[0m[38;2;230;219;116ms[0m[38;2;230;219;116m:[0m[38;2;230;219;116m/[0m[38;2;230;219;116m/[0m[38;2;230;219;116ms[0m[38;2;230;219;116m3[0m[38;2;230;219;116m.[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116ma[0m[38;2;230;219;116mz[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mw[0m[38;2;230;219;116ms[0m[38;2;230;219;116m.[0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m/[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mn[0m[38;2;230;219;116m-[0m[38;2;230;219;116ms[0m[38;2;230;219;116mw[0m[38;2;230;219;116mi[0m[38;2;230;219;116mf[0m[38;2;230;219;116mt[0m[38;2;230;219;116m/[0m[38;2;230;219;116mI[0m[38;2;230;219;116mM[0m[38;2;230;219;116mG[0m[38;2;230;219;116m_[0m[38;2;230;219;116m0[0m[38;2;230;219;116m0[0m[38;2;230;219;116m0[0m[38;2;230;219;116m1[0m[38;2;230;219;116m.[0m[38;2;230;219;116mJ[0m[38;2;230;219;116mP[0m[38;2;230;219;116mG[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
145−[38;2;248;248;242m [0m
146−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sessionConfig [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLSessionConfiguration[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m[38;2;248;248;242m[0m
147−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m session [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLSession(configuration: sessionConfig)[0m
148−[38;2;248;248;242m [0m
149−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m request [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLRequest(url:fileURL[0m[38;2;249;38;114m![0m[38;2;248;248;242m)[0m
150−[38;2;248;248;242m [0m
151−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m task [0m[38;2;249;38;114m=[0m[38;2;248;248;242m session[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdownloadTask(with: request) { (tempLocalUrl, response, error) [0m[38;2;249;38;114min[0m[38;2;248;248;242m[0m
152−[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m tempLocalUrl [0m[38;2;249;38;114m=[0m[38;2;248;248;242m tempLocalUrl, error [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;248;248;242mnil[0m[38;2;248;248;242m {[0m
153−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Success[0m
[38;2;248;248;242m[0m
154−[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m statusCode [0m[38;2;249;38;114m=[0m[38;2;248;248;242m (response [0m[38;2;249;38;114mas?[0m[38;2;248;248;242m HTTPURLResponse)?[0m[38;2;249;38;114m.[0m[38;2;248;248;242mstatusCode {[0m
155−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116mu[0m[38;2;230;219;116mc[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116ms[0m[38;2;230;219;116ms[0m[38;2;230;219;116mf[0m[38;2;230;219;116mu[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116my[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mS[0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mstatusCode[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
156−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
157−[38;2;248;248;242m [0m
158−[38;2;248;248;242m [0m[38;2;248;248;242mdo[0m[38;2;248;248;242m {[0m
159−[38;2;248;248;242m [0m[38;2;249;38;114mtry[0m[38;2;248;248;242m FileManager[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcopyItem(at: tempLocalUrl, to: destinationFileUrl)[0m
160−[38;2;248;248;242m } [0m[38;2;248;248;242mcatch[0m[38;2;248;248;242m ([0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m writeError) {[0m
161−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mdestinationFileUrl[0m[38;2;248;248;242m)[0m[38;2;230;219;116m [0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mwriteError[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
162−[38;2;248;248;242m }[0m
163−[38;2;248;248;242m [0m
164−[38;2;248;248;242m } [0m[38;2;249;38;114melse[0m[38;2;248;248;242m {[0m
165−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116mo[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mw[0m[38;2;230;219;116mh[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116ms[0m[38;2;230;219;116mc[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116mp[0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;230;219;116m%[0m[38;2;230;219;116m@[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, error?[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlocalizedDescription);[0m
166−[38;2;248;248;242m }[0m
167−[38;2;248;248;242m }[0m
168−[38;2;248;248;242m task[0m[38;2;249;38;114m.[0m[38;2;248;248;242mresume()[0m
169−[38;2;248;248;242m [0m
170−[38;2;248;248;242m }[0m
171−[38;2;248;248;242m}[0m
172−[38;2;248;248;242m[0m
173−[38;2;248;248;242m [0m[38;2;248;248;242mdo[0m[38;2;248;248;242m {[0m
174−[38;2;248;248;242m [0m
175−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Convert JSON Object received from server side into Swift NSArray.[0m
[38;2;248;248;242m[0m
176−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Note the use "try"[0m
[38;2;248;248;242m[0m
177−[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m convertedJsonIntoArray [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mtry[0m[38;2;248;248;242m JSONSerialization[0m[38;2;249;38;114m.[0m[38;2;248;248;242mJSONObjectWithData(data[0m[38;2;249;38;114m![0m[38;2;248;248;242m, options: []) [0m[38;2;249;38;114mas?[0m[38;2;248;248;242m NSArray {[0m
178−[38;2;248;248;242m }[0m
179−[38;2;248;248;242m [0m
180−[38;2;248;248;242m } [0m[38;2;248;248;242mcatch[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m error [0m[38;2;249;38;114mas[0m[38;2;248;248;242m NSError {[0m
181−[38;2;248;248;242m print(error[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlocalizedDescription)[0m
182−[38;2;248;248;242m }[0m
183−[38;2;248;248;242m[0m
184−[38;2;248;248;242mDispatchQueue[0m[38;2;249;38;114m.[0m[38;2;248;248;242mglobal(qos: [0m[38;2;249;38;114m.[0m[38;2;248;248;242muserInitiated)[0m[38;2;249;38;114m.[0m[38;2;248;248;242masync {[0m
185−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Do some time consuming task in this background thread[0m
[38;2;248;248;242m[0m
186−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Mobile app will remain to be responsive to user actions[0m
[38;2;248;248;242m[0m
187−[38;2;248;248;242m [0m
188−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mP[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mf[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mh[0m[38;2;230;219;116mi[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mb[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116mk[0m[38;2;230;219;116mg[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mu[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mh[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
189−[38;2;248;248;242m [0m
190−[38;2;248;248;242m DispatchQueue[0m[38;2;249;38;114m.[0m[38;2;248;248;242mmain[0m[38;2;249;38;114m.[0m[38;2;248;248;242masync {[0m
191−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Task consuming task has completed[0m
[38;2;248;248;242m[0m
192−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Update UI from this block of code[0m
[38;2;248;248;242m[0m
193−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mT[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mh[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m [0m[38;2;230;219;116mh[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mw[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116m [0m[38;2;230;219;116mu[0m[38;2;230;219;116mp[0m[38;2;230;219;116md[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mf[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
194−[38;2;248;248;242m }[0m
195−[38;2;248;248;242m }[0m
196−[38;2;248;248;242m[0m
197−[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m[38;2;248;248;242m[0m
198−[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
199−[38;2;248;248;242m [0m
200−[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
201−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
202−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Do any additional setup after loading the view, typically from a nib.[0m
[38;2;248;248;242m[0m
203−[38;2;248;248;242m [0m
204−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m button [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIButton(type: UIButtonType[0m[38;2;249;38;114m.[0m[38;2;248;248;242msystem) [0m[38;2;249;38;114mas[0m[38;2;248;248;242m UIButton[0m
205−[38;2;248;248;242m [0m
206−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m xPostion:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;248;248;242m[0m
207−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m yPostion:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;248;248;242m[0m
208−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m buttonWidth:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m150[0m[38;2;248;248;242m[0m
209−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m buttonHeight:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m45[0m[38;2;248;248;242m[0m
210−[38;2;248;248;242m [0m
211−[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mframe [0m[38;2;249;38;114m=[0m[38;2;248;248;242m CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight)[0m
212−[38;2;248;248;242m [0m
213−[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mbackgroundColor [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIColor[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlightGray[0m
214−[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242msetTitle([0m[38;2;230;219;116m"[0m[38;2;230;219;116mT[0m[38;2;230;219;116ma[0m[38;2;230;219;116mp[0m[38;2;230;219;116m [0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: UIControlState[0m[38;2;249;38;114m.[0m[38;2;248;248;242mnormal)[0m
215−[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mtintColor [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIColor[0m[38;2;249;38;114m.[0m[38;2;248;248;242mblack[0m
216−[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddTarget([0m[38;2;249;38;114mself[0m[38;2;248;248;242m, action: #selector(ViewController[0m[38;2;249;38;114m.[0m[38;2;248;248;242mbuttonAction(_:)), [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242mtouchUpInside)[0m
217−[38;2;248;248;242m [0m
218−[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mview[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddSubview(button)[0m
219−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
220−[38;2;248;248;242m [0m
221−[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mbuttonAction[0m[38;2;248;248;242m([0m[38;2;248;248;242m_ sender:UIButton[0m[38;2;249;38;114m![0m[38;2;248;248;242m)[0m[38;2;248;248;242m[0m
222−[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
223−[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mu[0m[38;2;230;219;116mt[0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116mp[0m[38;2;230;219;116mp[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
224−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
225−[38;2;248;248;242m [0m
226−[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mdidReceiveMemoryWarning[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
227−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdidReceiveMemoryWarning()[0m
228−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Dispose of any resources that can be recreated.[0m
[38;2;248;248;242m[0m
229−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
230−[38;2;248;248;242m [0m
231−[38;2;248;248;242m [0m
232−[38;2;248;248;242m}[0m
233−[38;2;248;248;242m[0m
234−[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m[38;2;248;248;242m[0m
235−[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
236−[38;2;248;248;242m [0m
237−[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
238−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
239−[38;2;248;248;242m [0m
240−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mCreate Activity Indicator[0m
[38;2;248;248;242m[0m
241−[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myActivityIndicator [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle[0m[38;2;249;38;114m.[0m[38;2;248;248;242mgray)[0m
242−[38;2;248;248;242m [0m
243−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Position Activity Indicator in the center of the main view[0m
[38;2;248;248;242m[0m
244−[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcenter [0m[38;2;249;38;114m=[0m[38;2;248;248;242m view[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcenter[0m
245−[38;2;248;248;242m [0m
246−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m If needed, you can prevent Acivity Indicator from hiding when stopAnimating() is called[0m
[38;2;248;248;242m[0m
247−[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mhidesWhenStopped [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m[38;2;248;248;242m[0m
248−[38;2;248;248;242m [0m
249−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Start Activity Indicator[0m
[38;2;248;248;242m[0m
250−[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mstartAnimating()[0m
251−[38;2;248;248;242m [0m
252−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Call stopAnimating() when need to stop activity indicator[0m
[38;2;248;248;242m[0m
253−[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mmyActivityIndicator.stopAnimating()[0m
[38;2;248;248;242m[0m
254−[38;2;248;248;242m [0m
255−[38;2;248;248;242m [0m
256−[38;2;248;248;242m view[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddSubview(myActivityIndicator)[0m
257−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
258−[38;2;248;248;242m [0m
259−[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mdidReceiveMemoryWarning[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m[38;2;248;248;242m[0m
260−[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdidReceiveMemoryWarning()[0m
261−[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m[0m
262−[38;2;248;248;242m [0m
263−[38;2;248;248;242m}[0m
264−[38;2;248;248;242m[0m
265−[38;2;248;248;242m[0m
266−[38;2;248;248;242m[0m
267−[38;2;248;248;242m[0m
268−[38;2;248;248;242m[0m
1+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Person {[0m
2+[38;2;117;113;94m//[0m[38;2;117;113;94m We can define class property here[0m
3+[3;38;2;102;217;239mvar[0m[38;2;248;248;242m age [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m25[0m
4+[38;2;117;113;94m//[0m[38;2;117;113;94m Implement Class initializer. Initializers are called when a new object of this class is created[0m
5+[38;2;249;38;114minit[0m[38;2;248;248;242m() { [0m
6+[38;2;248;248;242m print(“A [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m instance of this [0m[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Person [0m[38;2;249;38;114mis[0m[38;2;248;248;242m created[0m[38;2;249;38;114m.[0m[38;2;248;248;242m”) [0m
7+[38;2;248;248;242m } [0m
8+[38;2;248;248;242m} [0m
9+[38;2;117;113;94m//[0m[38;2;117;113;94m We can now create an instance of class Person - an object - by putting parentheses after the class name[0m
10+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m personObj [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Person()[0m
11+[38;2;117;113;94m//[0m[38;2;117;113;94m Once an instance of Person class is created we can access its properties using the dot “.” syntax.[0m
12+[38;2;248;248;242mprint(“This person age [0m[38;2;249;38;114mis[0m[38;2;248;248;242m \(personObj[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage)”)[0m
13+
14+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mFoundation[0m
15+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Friend [0m[38;2;249;38;114m:[0m[38;2;248;248;242m Comparable {[0m
16+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m
17+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m age [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mInt[0m
18+[38;2;248;248;242m [0m
19+[38;2;248;248;242m [0m[38;2;249;38;114minit[0m[38;2;248;248;242m(name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, age: [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m) {[0m
20+[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m=[0m[38;2;248;248;242m name[0m
21+[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m=[0m[38;2;248;248;242m age[0m
22+[38;2;248;248;242m }[0m
23+[38;2;248;248;242m}[0m
24+[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m<[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
25+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m<[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;248;248;242m}[0m[38;2;248;248;242m; [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m>[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
26+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m>[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage[0m
27+[38;2;248;248;242m}[0m
28+[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46m==[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mlhs: Friend, rhs: Friend[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m->[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
29+[38;2;248;248;242m [0m[3;38;2;102;217;239mvar[0m[38;2;248;248;242m returnValue [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m
30+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m (lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m==[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname) [0m[38;2;249;38;114m&&[0m[38;2;248;248;242m (lhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m==[0m[38;2;248;248;242m rhs[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage)[0m
31+[38;2;248;248;242m {[0m
32+[38;2;248;248;242m returnValue [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m
33+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
34+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m returnValue[0m
35+[38;2;248;248;242m}[0m
36+
37+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend1 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m35[0m[38;2;248;248;242m)[0m
38+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend2 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m30[0m[38;2;248;248;242m)[0m
39+[38;2;248;248;242m [0m
40+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mC[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mo[0m[38;2;230;219;116mb[0m[38;2;230;219;116mj[0m[38;2;230;219;116me[0m[38;2;230;219;116mc[0m[38;2;230;219;116mt[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mS[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mp[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m?[0m[38;2;230;219;116m [0m[38;2;230;219;116m([0m[38;2;230;219;116mf[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m1[0m[38;2;230;219;116m [0m[38;2;230;219;116m=[0m[38;2;230;219;116m=[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116me[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m2[0m[38;2;230;219;116m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
41+
42+[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46msayHelloWorld[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
43+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mH[0m[38;2;230;219;116me[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116m [0m[38;2;230;219;116mW[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116ml[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
44+[38;2;248;248;242m}[0m
45+[38;2;117;113;94m//[0m[38;2;117;113;94m Call function[0m
46+[38;2;248;248;242msayHelloWorld()[0m
47+
48+[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mprintOutFriendNames[0m[38;2;248;248;242m([0m[38;2;248;248;242mnames: [0m[3;38;2;166;226;46mString[0m[38;2;249;38;114m...[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
49+[38;2;248;248;242m [0m
50+[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m name [0m[38;2;249;38;114min[0m[38;2;248;248;242m names {[0m
51+[38;2;248;248;242m [0m
52+[38;2;248;248;242m print(name)[0m
53+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
54+[38;2;248;248;242m [0m
55+[38;2;248;248;242m}[0m
56+[38;2;117;113;94m//[0m[38;2;117;113;94m Call the printOutFriendNames with two parameters[0m
57+[38;2;248;248;242mprintOutFriendNames([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
58+[38;2;117;113;94m//[0m[38;2;117;113;94m Call the function with more parameters[0m
59+[38;2;248;248;242mprintOutFriendNames([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116ma[0m[38;2;230;219;116mx[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
60+
61+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m simpleClosure [0m[38;2;249;38;114m=[0m[38;2;248;248;242m {[0m
62+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116ms[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116mC[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
63+[38;2;248;248;242m}[0m
64+[38;2;117;113;94m//[0m[38;2;117;113;94m Call closure[0m
65+[38;2;248;248;242msimpleClosure() [0m
66+
67+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m fullName [0m[38;2;249;38;114m=[0m[38;2;248;248;242m { (firstName:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, lastName:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m)[0m[38;2;249;38;114m->[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m [0m[38;2;249;38;114min[0m
68+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m firstName [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m [0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m lastName[0m
69+[38;2;248;248;242m}[0m
70+[38;2;117;113;94m//[0m[38;2;117;113;94m Call Closure[0m
71+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myFullName [0m[38;2;249;38;114m=[0m[38;2;248;248;242m fullName([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
72+[38;2;248;248;242mprint([0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116my[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mu[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m [0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mmyFullName[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
73+
74+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m]()[0m
75+[38;2;117;113;94m//[0m[38;2;117;113;94m Another way to create an empty dictionary[0m
76+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary2:[[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;249;38;114m:[0m[38;2;248;248;242m][0m
77+[38;2;117;113;94m//[0m[38;2;117;113;94m Keys in dictionary can also be of type Int[0m
78+[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myDictionary3 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m:[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m]()[0m
79+
80+[3;38;2;102;217;239mvar[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m][0m
81+[38;2;117;113;94m//[0m[38;2;117;113;94m print to preview[0m
82+[38;2;248;248;242mprint(myDictionary)[0m
83+[38;2;117;113;94m//[0m[38;2;117;113;94m Add a new key with a value[0m
84+[38;2;248;248;242mmyDictionary[[0m[38;2;230;219;116m"[0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116m_[0m[38;2;230;219;116mi[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116m5[0m[38;2;230;219;116mh[0m[38;2;230;219;116m7[0m[38;2;230;219;116mr[0m[38;2;230;219;116mu[0m[38;2;230;219;116m0[0m[38;2;230;219;116mt[0m[38;2;230;219;116mJ[0m[38;2;230;219;116mu[0m[38;2;230;219;116mr[0m[38;2;230;219;116mY[0m[38;2;230;219;116m8[0m[38;2;230;219;116mf[0m[38;2;230;219;116m7[0m[38;2;230;219;116mg[0m[38;2;230;219;116m5[0m[38;2;230;219;116ms[0m[38;2;230;219;116m6[0m[38;2;230;219;116mf[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m
85+[38;2;117;113;94m//[0m[38;2;117;113;94m We should now have 3 key value pairs printed[0m
86+[38;2;248;248;242mprint(myDictionary)[0m
87+
88+[3;38;2;102;217;239mvar[0m[38;2;248;248;242m myDictionary [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [[0m[38;2;230;219;116m"[0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116mr[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mt[0m[38;2;230;219;116m_[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mK[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116mo[0m[38;2;230;219;116mp[0m[38;2;230;219;116mo[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m][0m
89+[38;2;117;113;94m//[0m[38;2;117;113;94m Loop through dictionary keys and print values[0m
90+[38;2;249;38;114mfor[0m[38;2;248;248;242m (key,value) [0m[38;2;249;38;114min[0m[38;2;248;248;242m myDictionary {[0m
91+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;248;248;242m\([0m[38;2;248;248;242mkey[0m[38;2;248;248;242m)[0m[38;2;230;219;116m [0m[38;2;230;219;116m=[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mvalue[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
92+[38;2;248;248;242m}[0m
93+[38;2;248;248;242m [0m[3;38;2;102;217;239mclass[0m[38;2;248;248;242m Friend {[0m
94+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m
95+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m age [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mInt[0m
96+[38;2;248;248;242m [0m
97+[38;2;248;248;242m [0m[38;2;249;38;114minit[0m[38;2;248;248;242m(name [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m, age: [0m[3;38;2;166;226;46mInt[0m[38;2;248;248;242m) {[0m
98+[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m=[0m[38;2;248;248;242m name[0m
99+[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m=[0m[38;2;248;248;242m age[0m
100+[38;2;248;248;242m }[0m
101+[38;2;248;248;242m}[0m
102+
103+[38;2;248;248;242m [0m[3;38;2;102;217;239mvar[0m[38;2;248;248;242m friends:[Friend] [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [][0m
104+[38;2;248;248;242m [0m
105+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend1 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m30[0m[38;2;248;248;242m)[0m
106+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend2 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m35[0m[38;2;248;248;242m)[0m
107+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m friend3 [0m[38;2;249;38;114m=[0m[38;2;248;248;242m Friend(name: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mM[0m[38;2;230;219;116mi[0m[38;2;230;219;116mc[0m[38;2;230;219;116mh[0m[38;2;230;219;116ma[0m[38;2;230;219;116me[0m[38;2;230;219;116ml[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, age: [0m[38;2;190;132;255m21[0m[38;2;248;248;242m)[0m
108+[38;2;248;248;242m [0m
109+[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend1)[0m
110+[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend2)[0m
111+[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappend(friend3)[0m
112+[38;2;248;248;242m [0m
113+[38;2;248;248;242m printFriends(friends: friends)[0m
114+[38;2;248;248;242m [0m
115+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Get sorted array in descending order (largest to the smallest number)[0m
116+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sortedFriends [0m[38;2;249;38;114m=[0m[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242msorted(by: { $[0m[38;2;190;132;255m0[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m>[0m[38;2;248;248;242m $[0m[38;2;190;132;255m1[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage })[0m
117+[38;2;248;248;242m printFriends(friends: sortedFriends)[0m
118+[38;2;248;248;242m [0m
119+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Get sorted array in ascending order (smallest to the largest number)[0m
120+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sortedFriendsAscendingOrder [0m[38;2;249;38;114m=[0m[38;2;248;248;242m friends[0m[38;2;249;38;114m.[0m[38;2;248;248;242msorted(by: { $[0m[38;2;190;132;255m0[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage [0m[38;2;249;38;114m<[0m[38;2;248;248;242m $[0m[38;2;190;132;255m1[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage })[0m
121+[38;2;248;248;242m printFriends(friends: sortedFriendsAscendingOrder)[0m
122+
123+
124+[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mprintFriends[0m[38;2;248;248;242m([0m[38;2;248;248;242mfriends: [Friend][0m[38;2;248;248;242m)[0m
125+[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
126+[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m friendEntry [0m[38;2;249;38;114min[0m[38;2;248;248;242m friends {[0m
127+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mN[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mfriendEntry[0m[38;2;249;38;114m.[0m[38;2;248;248;242mname[0m[38;2;248;248;242m)[0m[38;2;230;219;116m,[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116mg[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mfriendEntry[0m[38;2;249;38;114m.[0m[38;2;248;248;242mage[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
128+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
129+[38;2;248;248;242m }[0m
130+
131+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m
132+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
133+[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
134+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
135+[38;2;248;248;242m}[0m
136+[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewWillAppear[0m[38;2;248;248;242m([0m[38;2;248;248;242m_ animated: [0m[3;38;2;166;226;46mBool[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
137+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewWillAppear(animated)[0m
138+[38;2;248;248;242m [0m
139+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Create destination URL [0m
140+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m documentsUrl:URL [0m[38;2;249;38;114m=[0m[38;2;248;248;242m FileManager[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m[38;2;249;38;114m.[0m[38;2;248;248;242murls([0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242mdocumentDirectory, [0m[38;2;249;38;114min[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242muserDomainMask)[0m[38;2;249;38;114m.[0m[38;2;248;248;242mfirst [0m[38;2;249;38;114mas[0m[38;2;248;248;242m URL[0m[38;2;249;38;114m![0m
141+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m destinationFileUrl [0m[38;2;249;38;114m=[0m[38;2;248;248;242m documentsUrl[0m[38;2;249;38;114m.[0m[38;2;248;248;242mappendingPathComponent([0m[38;2;230;219;116m"[0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116mF[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116mj[0m[38;2;230;219;116mp[0m[38;2;230;219;116mg[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
142+[38;2;248;248;242m [0m
143+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mCreate URL to the source file you want to download[0m
144+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m fileURL [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URL(string: [0m[38;2;230;219;116m"[0m[38;2;230;219;116mh[0m[38;2;230;219;116mt[0m[38;2;230;219;116mt[0m[38;2;230;219;116mp[0m[38;2;230;219;116ms[0m[38;2;230;219;116m:[0m[38;2;230;219;116m/[0m[38;2;230;219;116m/[0m[38;2;230;219;116ms[0m[38;2;230;219;116m3[0m[38;2;230;219;116m.[0m[38;2;230;219;116ma[0m[38;2;230;219;116mm[0m[38;2;230;219;116ma[0m[38;2;230;219;116mz[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ma[0m[38;2;230;219;116mw[0m[38;2;230;219;116ms[0m[38;2;230;219;116m.[0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m/[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116mn[0m[38;2;230;219;116m-[0m[38;2;230;219;116ms[0m[38;2;230;219;116mw[0m[38;2;230;219;116mi[0m[38;2;230;219;116mf[0m[38;2;230;219;116mt[0m[38;2;230;219;116m/[0m[38;2;230;219;116mI[0m[38;2;230;219;116mM[0m[38;2;230;219;116mG[0m[38;2;230;219;116m_[0m[38;2;230;219;116m0[0m[38;2;230;219;116m0[0m[38;2;230;219;116m0[0m[38;2;230;219;116m1[0m[38;2;230;219;116m.[0m[38;2;230;219;116mJ[0m[38;2;230;219;116mP[0m[38;2;230;219;116mG[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
145+[38;2;248;248;242m [0m
146+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m sessionConfig [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLSessionConfiguration[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m
147+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m session [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLSession(configuration: sessionConfig)[0m
148+[38;2;248;248;242m [0m
149+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m request [0m[38;2;249;38;114m=[0m[38;2;248;248;242m URLRequest(url:fileURL[0m[38;2;249;38;114m![0m[38;2;248;248;242m)[0m
150+[38;2;248;248;242m [0m
151+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m task [0m[38;2;249;38;114m=[0m[38;2;248;248;242m session[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdownloadTask(with: request) { (tempLocalUrl, response, error) [0m[38;2;249;38;114min[0m
152+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m tempLocalUrl [0m[38;2;249;38;114m=[0m[38;2;248;248;242m tempLocalUrl, error [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;248;248;242mnil[0m[38;2;248;248;242m {[0m
153+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Success[0m
154+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m statusCode [0m[38;2;249;38;114m=[0m[38;2;248;248;242m (response [0m[38;2;249;38;114mas?[0m[38;2;248;248;242m HTTPURLResponse)?[0m[38;2;249;38;114m.[0m[38;2;248;248;242mstatusCode {[0m
155+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mS[0m[38;2;230;219;116mu[0m[38;2;230;219;116mc[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116ms[0m[38;2;230;219;116ms[0m[38;2;230;219;116mf[0m[38;2;230;219;116mu[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116my[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mS[0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mstatusCode[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
156+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
157+[38;2;248;248;242m [0m
158+[38;2;248;248;242m [0m[38;2;248;248;242mdo[0m[38;2;248;248;242m {[0m
159+[38;2;248;248;242m [0m[38;2;249;38;114mtry[0m[38;2;248;248;242m FileManager[0m[38;2;249;38;114m.[0m[38;2;249;38;114mdefault[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcopyItem(at: tempLocalUrl, to: destinationFileUrl)[0m
160+[38;2;248;248;242m } [0m[38;2;248;248;242mcatch[0m[38;2;248;248;242m ([0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m writeError) {[0m
161+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mdestinationFileUrl[0m[38;2;248;248;242m)[0m[38;2;230;219;116m [0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;248;248;242m\([0m[38;2;248;248;242mwriteError[0m[38;2;248;248;242m)[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
162+[38;2;248;248;242m }[0m
163+[38;2;248;248;242m [0m
164+[38;2;248;248;242m } [0m[38;2;249;38;114melse[0m[38;2;248;248;242m {[0m
165+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116mo[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mw[0m[38;2;230;219;116mh[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116mn[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116m [0m[38;2;230;219;116mf[0m[38;2;230;219;116mi[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mE[0m[38;2;230;219;116mr[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116md[0m[38;2;230;219;116me[0m[38;2;230;219;116ms[0m[38;2;230;219;116mc[0m[38;2;230;219;116mr[0m[38;2;230;219;116mi[0m[38;2;230;219;116mp[0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m:[0m[38;2;230;219;116m [0m[38;2;230;219;116m%[0m[38;2;230;219;116m@[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, error?[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlocalizedDescription);[0m
166+[38;2;248;248;242m }[0m
167+[38;2;248;248;242m }[0m
168+[38;2;248;248;242m task[0m[38;2;249;38;114m.[0m[38;2;248;248;242mresume()[0m
169+[38;2;248;248;242m [0m
170+[38;2;248;248;242m }[0m
171+[38;2;248;248;242m}[0m
172+
173+[38;2;248;248;242m [0m[38;2;248;248;242mdo[0m[38;2;248;248;242m {[0m
174+[38;2;248;248;242m [0m
175+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Convert JSON Object received from server side into Swift NSArray.[0m
176+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Note the use "try"[0m
177+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m convertedJsonIntoArray [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mtry[0m[38;2;248;248;242m JSONSerialization[0m[38;2;249;38;114m.[0m[38;2;248;248;242mJSONObjectWithData(data[0m[38;2;249;38;114m![0m[38;2;248;248;242m, options: []) [0m[38;2;249;38;114mas?[0m[38;2;248;248;242m NSArray {[0m
178+[38;2;248;248;242m }[0m
179+[38;2;248;248;242m [0m
180+[38;2;248;248;242m } [0m[38;2;248;248;242mcatch[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m error [0m[38;2;249;38;114mas[0m[38;2;248;248;242m NSError {[0m
181+[38;2;248;248;242m print(error[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlocalizedDescription)[0m
182+[38;2;248;248;242m }[0m
183+
184+[38;2;248;248;242mDispatchQueue[0m[38;2;249;38;114m.[0m[38;2;248;248;242mglobal(qos: [0m[38;2;249;38;114m.[0m[38;2;248;248;242muserInitiated)[0m[38;2;249;38;114m.[0m[38;2;248;248;242masync {[0m
185+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Do some time consuming task in this background thread[0m
186+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Mobile app will remain to be responsive to user actions[0m
187+[38;2;248;248;242m [0m
188+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mP[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mf[0m[38;2;230;219;116mo[0m[38;2;230;219;116mr[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mh[0m[38;2;230;219;116mi[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mb[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116mk[0m[38;2;230;219;116mg[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mu[0m[38;2;230;219;116mn[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mh[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116ma[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
189+[38;2;248;248;242m [0m
190+[38;2;248;248;242m DispatchQueue[0m[38;2;249;38;114m.[0m[38;2;248;248;242mmain[0m[38;2;249;38;114m.[0m[38;2;248;248;242masync {[0m
191+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Task consuming task has completed[0m
192+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Update UI from this block of code[0m
193+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mT[0m[38;2;230;219;116mi[0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116ms[0m[38;2;230;219;116mu[0m[38;2;230;219;116mm[0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mg[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116mk[0m[38;2;230;219;116m [0m[38;2;230;219;116mh[0m[38;2;230;219;116ma[0m[38;2;230;219;116ms[0m[38;2;230;219;116m [0m[38;2;230;219;116mc[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116mp[0m[38;2;230;219;116ml[0m[38;2;230;219;116me[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m.[0m[38;2;230;219;116m [0m[38;2;230;219;116mF[0m[38;2;230;219;116mr[0m[38;2;230;219;116mo[0m[38;2;230;219;116mm[0m[38;2;230;219;116m [0m[38;2;230;219;116mh[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mw[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116mr[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116ma[0m[38;2;230;219;116ml[0m[38;2;230;219;116ml[0m[38;2;230;219;116mo[0m[38;2;230;219;116mw[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116m [0m[38;2;230;219;116mu[0m[38;2;230;219;116mp[0m[38;2;230;219;116md[0m[38;2;230;219;116ma[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116m [0m[38;2;230;219;116mu[0m[38;2;230;219;116ms[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116m [0m[38;2;230;219;116mi[0m[38;2;230;219;116mn[0m[38;2;230;219;116mt[0m[38;2;230;219;116me[0m[38;2;230;219;116mr[0m[38;2;230;219;116mf[0m[38;2;230;219;116ma[0m[38;2;230;219;116mc[0m[38;2;230;219;116me[0m[38;2;230;219;116m.[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
194+[38;2;248;248;242m }[0m
195+[38;2;248;248;242m }[0m
196+
197+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m
198+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
199+[38;2;248;248;242m [0m
200+[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
201+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
202+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Do any additional setup after loading the view, typically from a nib.[0m
203+[38;2;248;248;242m [0m
204+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m button [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIButton(type: UIButtonType[0m[38;2;249;38;114m.[0m[38;2;248;248;242msystem) [0m[38;2;249;38;114mas[0m[38;2;248;248;242m UIButton[0m
205+[38;2;248;248;242m [0m
206+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m xPostion:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m
207+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m yPostion:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m
208+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m buttonWidth:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m150[0m
209+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m buttonHeight:CGFloat [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m45[0m
210+[38;2;248;248;242m [0m
211+[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mframe [0m[38;2;249;38;114m=[0m[38;2;248;248;242m CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight)[0m
212+[38;2;248;248;242m [0m
213+[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mbackgroundColor [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIColor[0m[38;2;249;38;114m.[0m[38;2;248;248;242mlightGray[0m
214+[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242msetTitle([0m[38;2;230;219;116m"[0m[38;2;230;219;116mT[0m[38;2;230;219;116ma[0m[38;2;230;219;116mp[0m[38;2;230;219;116m [0m[38;2;230;219;116mm[0m[38;2;230;219;116me[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: UIControlState[0m[38;2;249;38;114m.[0m[38;2;248;248;242mnormal)[0m
215+[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242mtintColor [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIColor[0m[38;2;249;38;114m.[0m[38;2;248;248;242mblack[0m
216+[38;2;248;248;242m button[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddTarget([0m[38;2;249;38;114mself[0m[38;2;248;248;242m, action: #selector(ViewController[0m[38;2;249;38;114m.[0m[38;2;248;248;242mbuttonAction(_:)), [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m: [0m[38;2;249;38;114m.[0m[38;2;248;248;242mtouchUpInside)[0m
217+[38;2;248;248;242m [0m
218+[38;2;248;248;242m [0m[38;2;249;38;114mself[0m[38;2;249;38;114m.[0m[38;2;248;248;242mview[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddSubview(button)[0m
219+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
220+[38;2;248;248;242m [0m
221+[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mbuttonAction[0m[38;2;248;248;242m([0m[38;2;248;248;242m_ sender:UIButton[0m[38;2;249;38;114m![0m[38;2;248;248;242m)[0m
222+[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
223+[38;2;248;248;242m print([0m[38;2;230;219;116m"[0m[38;2;230;219;116mB[0m[38;2;230;219;116mu[0m[38;2;230;219;116mt[0m[38;2;230;219;116mt[0m[38;2;230;219;116mo[0m[38;2;230;219;116mn[0m[38;2;230;219;116m [0m[38;2;230;219;116mt[0m[38;2;230;219;116ma[0m[38;2;230;219;116mp[0m[38;2;230;219;116mp[0m[38;2;230;219;116me[0m[38;2;230;219;116md[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m
224+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
225+[38;2;248;248;242m [0m
226+[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mdidReceiveMemoryWarning[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
227+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdidReceiveMemoryWarning()[0m
228+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Dispose of any resources that can be recreated.[0m
229+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
230+[38;2;248;248;242m [0m
231+[38;2;248;248;242m [0m
232+[38;2;248;248;242m}[0m
233+
234+[38;2;249;38;114mimport[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mUIKit[0m
235+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m ViewController: UIViewController {[0m
236+[38;2;248;248;242m [0m
237+[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mviewDidLoad[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
238+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mviewDidLoad()[0m
239+[38;2;248;248;242m [0m
240+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mCreate Activity Indicator[0m
241+[38;2;248;248;242m [0m[3;38;2;102;217;239mlet[0m[38;2;248;248;242m myActivityIndicator [0m[38;2;249;38;114m=[0m[38;2;248;248;242m UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle[0m[38;2;249;38;114m.[0m[38;2;248;248;242mgray)[0m
242+[38;2;248;248;242m [0m
243+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Position Activity Indicator in the center of the main view[0m
244+[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcenter [0m[38;2;249;38;114m=[0m[38;2;248;248;242m view[0m[38;2;249;38;114m.[0m[38;2;248;248;242mcenter[0m
245+[38;2;248;248;242m [0m
246+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m If needed, you can prevent Acivity Indicator from hiding when stopAnimating() is called[0m
247+[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mhidesWhenStopped [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m
248+[38;2;248;248;242m [0m
249+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Start Activity Indicator[0m
250+[38;2;248;248;242m myActivityIndicator[0m[38;2;249;38;114m.[0m[38;2;248;248;242mstartAnimating()[0m
251+[38;2;248;248;242m [0m
252+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m Call stopAnimating() when need to stop activity indicator[0m
253+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94mmyActivityIndicator.stopAnimating()[0m
254+[38;2;248;248;242m [0m
255+[38;2;248;248;242m [0m
256+[38;2;248;248;242m view[0m[38;2;249;38;114m.[0m[38;2;248;248;242maddSubview(myActivityIndicator)[0m
257+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
258+[38;2;248;248;242m [0m
259+[38;2;248;248;242m [0m[38;2;249;38;114moverride[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mfunc[0m[38;2;248;248;242m [0m[38;2;166;226;46mdidReceiveMemoryWarning[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
260+[38;2;248;248;242m [0m[38;2;249;38;114msuper[0m[38;2;249;38;114m.[0m[38;2;248;248;242mdidReceiveMemoryWarning()[0m
261+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
262+[38;2;248;248;242m [0m
263+[38;2;248;248;242m}[0m
264+
265+
266+
267+
268+