source: doc/theses/fangren_yu_MMath/test.swift@ b28ce93

Last change on this file since b28ce93 was 68c7062, checked in by Peter A. Buhr <pabuhr@…>, 5 months ago

update overload test programs for Ada and swift

  • Property mode set to 100644
File size: 1.9 KB
Line 
1// overloading on return type
2func random() -> Int { 3; }
3func random() -> String { "abc"; }
4func random() -> Double { 3.5; }
5var r1 : Int = random();
6print( r1 );
7var r2 : String = random();
8print( r2 );
9var r3 : Double = random();
10print( r3 );
11
12// function overloading without parameter names
13//func fun( _ x : Int ) { 3; }
14//func fun( _ x : Int, _ y : Int ) { 3; }
15func fun( _ x : Double ) { 3; }
16func fun( _ x : Int ) -> Int { 3; }
17func fun( _ x : Int, _ y : Int ) -> Int { x + y; }
18func fun( _ x : String ) -> String { "abc"; }
19print( fun( 3, 4 ) );
20// print( fun( 3.5 ) ); // no Double -> Int
21//print( fun( r3 ) ); // no, Double -> Int
22
23// overloading on parameter name
24func foo( x : Int ) -> Int { 3; }
25func foo( y : Int ) -> Int { 3; }
26print( foo( x : 3 ) );
27print( foo( y : 3 ) );
28
29// overloading on member name
30class C {
31 func foo() {}
32 func foo( _ x: Int ) -> Int { 3; }
33 func foo( _ x : Double, _ y : Double ) -> Double { x + y; }
34 func foo( _ x : String ) -> String { "abc"; }
35}
36
37let c = C()
38c.foo();
39r1 = c.foo( 3 );
40r3 = c.foo( 3, 3.5 );
41r2 = c.foo( "abc" );
42
43// generic overloading without parameter names
44func bar<T>( _ a : T ) { print( "bar1", a ); }
45func bar<T>( _ a : T, _ b : T ) { print( "bar2", a, b ); }
46func bar<T,U>( _ a : T, _ b : U) { print( "bar3", a, b ); }
47bar( 3 );
48bar( 3.5 );
49bar( 2, 2 );
50bar( 2, 2.5 );
51
52// generic overloading with parameter names
53func baz( a : Int ) { print( "baz1", a ); }
54func baz<T>( a : T ) { print( "baz1", a ); }
55func baz<T>( a : T, b : T ) { print( "baz2", a, b ); }
56func baz<T,U>( a : T, b : U ) { print( "baz3", a, b ); }
57baz( a : 3 );
58baz( a : 3.5 );
59baz( a : 2, b : 2 );
60baz( a : 2, b : 2.5 );
61func swap<T>( _ a : inout T, _ b : inout T ) { let temp : T = a; a = b; b = temp; }
62var ix = 4, iy = 3;
63swap( &ix, &iy );
64print( ix, iy );
65var fx = 4.5, fy = 3.5;
66swap( &fx, &fy );
67print( fx, fy );
68// Local Variables: //
69// compile-command: "swift test.swift" //
70// End: //
Note: See TracBrowser for help on using the repository browser.