1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
class OverTheTop {
def info0(m: String) = m + "!"
def info0(m: String, args: Any*) = m +" "+ args.mkString(" ")
// as reported
def info1(m: =>String) = m + "!"
def info1(m: =>String, args: Any*) = m +" "+ args.mkString(", ")
// @lrytz
def m[A](x: => Int) = 0; def m[A](x: => Int, xs: Int*) = 1
def m1(x: => Int, s: String) = 0
def m1(x: => Int, s: Object) = 1
def m2(x: => Int, s: String) = 0
def m2(x: => AnyVal, s: Object) = 1
def m3(x: => Int, s: String) = 0
def m3(x: => Any, s: Object) = 1
}
object Test {
def main(args: Array[String]) {
val top = new OverTheTop
println(top.info0("hello"))
println(top.info0("hello","working","world"))
println(top.info1("goodnight"))
println(top.info1("goodnight", "moon", "nobody", "noises everywhere"))
println(top.m(17))
println(top.m(17,19))
println(top.m1(1, "two"))
println(top.m1(1, new Object()))
println(top.m2(1, ""))
println(top.m2(1d, ""))
println(top.m3(1, ""))
println(top.m3("", ""))
}
}
|