class A {
def f(a:Int):Int = a +
3
}
class B extends A{
val f =
2
}
scala>
val b=
new B
b: B = B@
6990bf8d
scala> b.f
res1: Int =
2
scala> b.f(
2)
res2: Int =
5
class A {
val f =
2
}
class B extends A{
def f(a:Int):Int = a +
3
}
scala>
val b=
new B
b: B = B@
6990bf8d
scala>
val a:Int = b.f
a: Int =
2
scala> b.f(
2)
res1: Int =
5
class A {
val f:(Int) => Int = (a:Int) => a -
3
}
class B extends A{
def f(a:Int):Int = a +
3
}
scala>
val b=
new B
b: B = B@
29a224bb
scala> b.f(
2)
res1: Int =
5
scala>
val a:(Int)=>Int = b.f
<console>:
14: error: ambiguous reference to overloaded definition,
both method f in
class B of type (a: Int)Int
and value f in
class A of type => Int => Int
match expected
type Int => Int
val a:(Int)=>Int = b.f
^
class A {
val f:(Int) => String = (a:Int) => a.toString
}
class B extends A{
def f(a:Int):Int = a +
3
}
scala>
val b =
new B
b: B = B@
63e6dcda
scala> b.f
<console>:
15: error: ambiguous reference to overloaded definition,
both method f in
class B of type (a: Int)Int
and value f in
class A of type => Int => String
match expected
type ?
b.f
^
scala> b.f(
2)
res1: Int =
5
scala>
val a : (Int)=> String = b.f
a: Int => String = <function1>
scala> a(
3)
res2: String =
3
转载请注明原文地址: https://ju.6miu.com/read-1295610.html