source: doc/theses/jiada_liang_MMath/test.swift @ 4db0140

Last change on this file since 4db0140 was 1725989, checked in by Peter A. Buhr <pabuhr@…>, 5 months ago

add enumeration test programs for different programming languages

  • Property mode set to 100644
File size: 1.8 KB
Line 
1struct S {
2        var i : Int,  j : Int
3}
4var s = S( i : 3, j : 5 )
5enum ADT {
6        case I(Int)   // int
7        case F(Float) // float
8        case S(S)     // struct
9}
10var adt : ADT
11adt = ADT.I( 3 );  print( adt )
12adt = .F( 3.5 );  print( adt )
13adt = .S( s );  print( adt )
14switch 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
20enum 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};
25var week : Week = Week.Mon;
26
27if week == .Mon {
28        print( week );
29}
30if week <= .Fri {
31        print( "weekday" );
32}
33if .Sat < week {
34        print( "weekend" );
35}
36switch 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
46enum WeekI: Comparable, CaseIterable {
47        case Mon, Tue, Wed, Thu, Fri, Sat, Sun // unit-type
48};
49var weeki : WeekI = WeekI.Mon;
50if weeki <= .Fri {
51        print( "weekday" );
52}
53for day in WeekI.allCases { 
54        print( day, terminator:" " ) 
55}
56print( "" )
57
58print( WeekI.allCases.count, WeekI.allCases )
59
60enum WeekInt: Int, CaseIterable {
61        case Mon, Tue, Wed, Thu = 10, Fri,
62                        Sat = 4, Sun // auto-incrementing
63};
64var weekInt : WeekInt = WeekInt.Mon;
65print( WeekInt.Thu.rawValue );
66for day in WeekInt.allCases {
67        print( day.rawValue, terminator:" " ) 
68}
69print( "" )
70
71enum WeekStr: String, CaseIterable {
72        case Mon = "MON", Tue, Wed, Thu, Fri,
73                        Sat = "SAT", Sun
74};
75for day in WeekStr.allCases { 
76        print( day.rawValue, terminator:" " ) 
77}
78print( "" )
79
80if 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: //
Note: See TracBrowser for help on using the repository browser.