Scala中的子类型

时间:2017-03-09 19:15:25

标签: scala class subtyping

我创建了一个扩展到Counter的类,它跟踪加法和减法。我试图调用xs然后返回数字上升或下降的时间总和由xs实例调用,其编译但失败。

class Counter {
    private var n = 0
    def increment () = { n = n + 1 }
    def decrement () = { n = n - 1 }
    def get () : Int = n
}

def x (xs : Counter => Unit) : Int = {
    class foo extends Counter {
        var count = 0
        def incrementAndGet = {count += 1; count}
        def decrementAndGet = {count -= 1; count}
    }

    val counter1 = new foo
    xs(counter1)
    counter1.incrementAndGet
    counter1.decrementAndGet
}

谢谢大家,我实际上能够通过它。我需要创建另一个变量,可以跟踪我的增量和减量,然后在def inc和def dec中,我会添加到count或者减去数量:)

1 个答案:

答案 0 :(得分:0)

我建议你看一下Java设计模式&最好的做法。你的foo类并没有真正扩展计数器,因为它不会遮挡或覆盖任何东西。此外,你应该使用单身(对象计数器......)来跟踪你的添加物和substractions。祝你好运。