Last change
on this file since b28ce93 was d92bc97, checked in by Peter A. Buhr <pabuhr@…>, 4 months ago |
add Scala overloading test-program
|
-
Property mode
set to
100644
|
File size:
1.2 KB
|
Rev | Line | |
---|
[d92bc97] | 1 | object Main {
|
---|
| 2 | def fun( x: Int ) : Int = { print( "Int " ); return 3 }
|
---|
| 3 | def fun( x: Double ) : Int = { print( "Double " ); return 3 }
|
---|
| 4 | def fun( x: Int, y: Int ) : Int = { print( "Int, Int " ); return 3 }
|
---|
| 5 | def fun() : Int = { print( "() " ); return 3 }
|
---|
| 6 | def fun() : Double = { return 3.5 } // disallowed, ambiguous
|
---|
| 7 | def fun[T]( x: T ) : T = { print( "T " ); return x }
|
---|
| 8 | def fun[T,T]( x: T, y: T ) : T = { print( "T,T " ); return y }
|
---|
| 9 | def fun[T,U]( x: T, y: U ) : U = { print( "T,U " ); return y } // disallowed, ambiguous
|
---|
| 10 | val i: int = fun( 3, 3 );
|
---|
| 11 | val d2: double = fun( 3, 3.5 );
|
---|
| 12 | val d: Double = fun( 3.5 )
|
---|
| 13 | val s: String = fun( "def" )
|
---|
| 14 | def main( args: Array[String] ) = {
|
---|
| 15 | println( fun( 3 ) )
|
---|
| 16 | println( fun( 3.5 ) )
|
---|
| 17 | println( fun( 3, 3 ) )
|
---|
| 18 | println( fun() )
|
---|
| 19 | println( fun( "abc" ) )
|
---|
| 20 | }
|
---|
| 21 |
|
---|
| 22 | // // https://scastie.scala-lang.org/CuNcusyPTUKgZiVNWdyqZA
|
---|
| 23 | // needs scala 3.0
|
---|
| 24 |
|
---|
| 25 | // trait HasFoo[T] { def foo: T }
|
---|
| 26 |
|
---|
| 27 | // given HasFoo[String]:
|
---|
| 28 | // def foo = "string"
|
---|
| 29 | // given HasFoo[Int]:
|
---|
| 30 | // def foo = 42
|
---|
| 31 |
|
---|
| 32 | // def generic[T](using hasFoo: HasFoo[T]): T = hasFoo.foo
|
---|
| 33 |
|
---|
| 34 | // val i: Int = generic
|
---|
| 35 | // val s: String = generic
|
---|
| 36 |
|
---|
| 37 | // println(i) (): scala.Unit
|
---|
| 38 | // println(s) (): scala.Unit
|
---|
| 39 | }
|
---|
| 40 |
|
---|
| 41 | // scalac test.scala
|
---|
Note:
See
TracBrowser
for help on using the repository browser.