2
所以我明白在Scala中你不能擁有靜態成員,而是我們使用一個Singleton(儘管如此,還沒有完全理解這個概念)。所以我假設這樣的代碼在斯卡拉Scala Singleton與Java的比較
import scala.collection.mutable.Map
//Making use of Singleton: companion Object & Class
class CheckSumAccumulator {
private var sum = 0
def add(b: Byte) { sum += b }
def checksum(): Int = ~(sum & 0xFF) + 1
}
object CheckSumAccumulator{
private val cache = Map[String, Int]()
def calc(s: String): Int =
if (cache.contains(s))
cache(s)
else {
val acc = new CheckSumAccumulator
for (c <- s)
acc.add(c.toByte)
val cs = acc.checksum()
cache += (s -> cs)
cs
}
}
將在Java中這樣的等價物:
public class CheckSumAccumulator {
private var sum = 0
static void add(byte b){
...
}
static int checksum(){
...
}
public static void main (String [] args){
private val cache = ...
def calc(String s){
...
}
}
}
我是正確的思維方式?我正在學習斯卡拉:)