blob: 253fc93cfaf08aa41455aac4cd30732c1bace314 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
trait IStringPair[T] {
def a : String
def b : String
def build(a : String, b : String) : T
def cat(that : IStringPair[T]) = build(this.a + that.a, this.b + that.b)
override def toString = a + b
}
class StringPair(val a : String, val b : String) extends IStringPair[StringPair] {
def build(a : String, b : String) = new StringPair(a, b)
def len = a.length + b.length
}
object Test {
def main(args: Array[String]): Unit = {
val a = new StringPair("A", "B")
val b = new StringPair("1", "2")
val c = a cat b
println(c.len)
}
}
|