我創建了一個擴展到Counter的類,它跟蹤增加和減少。即時通訊設法調用xs,然後返回數字上升或下降的時間總和,這是由xs實例調用的,它的編譯卻失敗了。Scala中的子類型劃分
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的範圍內,我將添加到從計數中加上或減去的值:)
如何定義計數器; '失敗'是什麼意思,你期望代碼做什麼,...?請詳細描述你的問題。 – stholzm
通過我的測試你的代碼工作正常。我想它不會按照你想要的方式工作,但是你沒有描述你想要的東西,所以很難說。特別是,'xs(counter1)'這個陳述似乎毫無意義。 – jwvh
這段代碼有很多錯誤(或至少是奇怪的)。 Counter屬性('n','increment()','decrement()'和'get()')有什麼意義?他們沒有在任何地方使用。是否有一些使用此漏洞的代碼?此外,「這個數字上升或下降的總次數」究竟是什麼?如果遞增,則遞減結果爲2或0?你能告訴你如何調用'x'?你以'xs'傳遞什麼?調用它的意義是什麼?如果您在不提及實施的情況下陳述原始問題,也許我們可以指導您找到合適的解決方案。 – slouc