1 | struct S {
|
---|
2 | var i : Int, j : Int
|
---|
3 | }
|
---|
4 | var s = S( i : 3, j : 5 )
|
---|
5 | enum ADT {
|
---|
6 | case I(Int) // int
|
---|
7 | case F(Float) // float
|
---|
8 | case S(S) // struct
|
---|
9 | }
|
---|
10 | var adt : ADT
|
---|
11 | adt = ADT.I( 3 ); print( adt )
|
---|
12 | adt = .F( 3.5 ); print( adt )
|
---|
13 | adt = .S( s ); print( adt )
|
---|
14 | switch adt {
|
---|
15 | case .I(let i): print( i )
|
---|
16 | case .F(let f): print( f )
|
---|
17 | case .S(let s): print( s.i, s.j )
|
---|
18 | }
|
---|
19 |
|
---|
20 | enum Week: Comparable {
|
---|
21 | case Mon, Tue, Wed, Thu, Fri, Sat, Sun // unit-type
|
---|
22 | func isWeekday() -> Bool { return self <= .Fri } // method
|
---|
23 | func isWeekend() -> Bool { return .Sat <= self } // method
|
---|
24 | };
|
---|
25 | var week : Week = Week.Mon;
|
---|
26 |
|
---|
27 | if week == .Mon {
|
---|
28 | print( week );
|
---|
29 | }
|
---|
30 | if week <= .Fri {
|
---|
31 | print( "weekday" );
|
---|
32 | }
|
---|
33 | if .Sat < week {
|
---|
34 | print( "weekend" );
|
---|
35 | }
|
---|
36 | switch week { // exhaustive
|
---|
37 | case .Mon: print( "Mon" )
|
---|
38 | case .Tue: print( "Tue" )
|
---|
39 | case .Wed: print( "Wed" )
|
---|
40 | case .Thu: print( "Thu" )
|
---|
41 | case .Fri: print( "Fri" )
|
---|
42 | case .Sat: print( "Sat" )
|
---|
43 | case .Sun: print( "Sun" )
|
---|
44 | }
|
---|
45 |
|
---|
46 | enum WeekI: Comparable, CaseIterable {
|
---|
47 | case Mon, Tue, Wed, Thu, Fri, Sat, Sun // unit-type
|
---|
48 | };
|
---|
49 | var weeki : WeekI = WeekI.Mon;
|
---|
50 | if weeki <= .Fri {
|
---|
51 | print( "weekday" );
|
---|
52 | }
|
---|
53 | for day in WeekI.allCases {
|
---|
54 | print( day, terminator:" " )
|
---|
55 | }
|
---|
56 | print( "" )
|
---|
57 |
|
---|
58 | print( WeekI.allCases.count, WeekI.allCases )
|
---|
59 |
|
---|
60 | enum WeekInt: Int, CaseIterable {
|
---|
61 | case Mon, Tue, Wed, Thu = 10, Fri = 14,
|
---|
62 | Sat = 4, Sun // auto-incrementing
|
---|
63 | };
|
---|
64 | var weekInt : WeekInt = WeekInt.Mon;
|
---|
65 | print( WeekInt.Thu.rawValue );
|
---|
66 | for day in WeekInt.allCases {
|
---|
67 | print( day.rawValue, terminator:" " )
|
---|
68 | }
|
---|
69 | print( "" )
|
---|
70 |
|
---|
71 | enum WeekStr: String, CaseIterable {
|
---|
72 | case Mon = "MON", Tue, Wed, Thu, Fri,
|
---|
73 | Sat = "SAT", Sun
|
---|
74 | };
|
---|
75 | for day in WeekStr.allCases {
|
---|
76 | print( day.rawValue, terminator:" " )
|
---|
77 | }
|
---|
78 | print( "" )
|
---|
79 |
|
---|
80 | if let opt = WeekInt( rawValue: 0 ) {
|
---|
81 | print( weekInt.rawValue, opt )
|
---|
82 | } else {
|
---|
83 | print( "invalid weekday lookup" )
|
---|
84 | }
|
---|
85 |
|
---|
86 | // Local Variables: //
|
---|
87 | // compile-command: "swift test.swift" //
|
---|
88 | // End: //
|
---|