码迷,mamicode.com
首页 > 其他好文 > 详细

Scala学习 -- 单例对象

时间:2019-10-24 21:24:36      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:关键字   mac   com   使用   nta   单例   私有   定义   nio   

  Scala 比 Java 更面向对象一点,是 Scala 的类不允许静态(static)成员。对此类使用场景,Scala 提供了 单例对象(object)。单例对象的定义看上去跟类定义很像,只不过 class 关键字被换成了 object 关键字。

  在事例中单例对象名叫 ChecksumAccumulator, 跟前一个例子中的类名一样。

  当单例对象跟某个类公用同一个名字时,它被称作这个类的 伴生对象(companion object)。

  必须在同一个源码文件中定义的类和类的伴生对象。同时,类又叫做这个单例对象的伴生类。类和他的伴生对象可以互相访问对方的私有成员。

import scala.collection.mutable
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
        }
}

  

Scala学习 -- 单例对象

标签:关键字   mac   com   使用   nta   单例   私有   定义   nio   

原文地址:https://www.cnblogs.com/Lyh1997/p/11734857.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!