2013-06-05 80 views
5

我想結合兩個庫,一個需要我用方法a_1 a_2 ... a_n,b_1,b_2 ... b_m來擴展抽象類,另一個需要我提供兩個對象A和B分別執行方法a_i和b_i。有沒有一種優雅的方式來結合A和B?這是我目前正在做的:在斯卡拉,結合對象方法作爲類方法

class myClass extends abstractClass { 
    def a_1 = A.a_1 
    def a_2 = A.a_2 
    ... 

    def b_1 = B.b_1 
    def b_2 = B.b_2 
    ... 
} 

回答

4

斯卡拉通過性狀支持多inheretence但一個類不能從對象

這裏inhereted是一個例子

object Combiner { 
    trait A { 
    def a_1 = println("Hello A a_1") 
    def a_2 = println("Hello A a_2") 
    } 
    trait B { 
    def b_1 = println("Hello B b_1") 
    def b_2 = println("Hello B b_2") 
    } 
} 
abstract class absractClass { 
    def AC 
} 
class myClass extends absractClass with A with B { 
    override def AC = println("AC from myClass") 
} 
def main(args: Array[String]) { 
    var m = new myClass 
    m.AC 
    m.b_1 
    m.b_2 
    m.a_1 
    m.a_2 
} 
+0

我不知道,你可以寫一個類中的特質/目的。謝謝你的回答,它使我的一天:) – OlivierBlanvillain

1

這樣的事情?

trait A { 
    def a_1: Int 
    def a_2: Int 
    def foo = a_1 + a_2 
} 

trait B { 
    def a_1 = 2 
    def a_2 = 3 
} 

class C extends A with B 

println((new C).foo)