class ChecksumAccumulator {
private var sum = 0
def add(b:Byte):Unit = { sum += b }
def checksum():Int = ~(sum & 0xFF) + 1
}
package Test
import scala.collection.mutable
class ChecksumAccumulator {
private var sum = 0
def add(b:Byte):Unit = { sum += b }
def checksum():Int = ~(sum & 0xFF) + 1
}
object ChecksumAccumulator{
private val cache = mutable.Map.empty[String,Int]
def calculate(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
}
}
}
import Test.ChecksumAccumulator.calculate
object SumTest {
def main(args:Array[String]) = {
val str = "lishiming"
println(calculate(str))
}
}
import Test.ChecksumAccumulator.calculate
object SumTest extends App {
val str = "lishiming"
println(calculate(str))
}