Scala伴生类和伴生对象
單例對象與類同名時,這個單例對象被稱為這個類的伴生對象,而這個類被稱為這個單例對象的伴生類。伴生類和伴生對象要在同一個源文件中定義,伴生對象和伴生類可以互相訪問其私有成員。不與伴生類同名的單例對象稱為孤立對象。
ChecksumAccumulator單例對象有一個方法calculate,用于計算所帶的String參數中字符的校驗和。它還有一個私有字段cache,一個緩存之前計算過的校驗和的可變映射。方法的第一行,"if (cache.contains(s))",檢查緩存,看看是否傳遞進來的字串已經作為鍵存在于映射當中。如果是,就僅僅返回映射的值,"cache(s)"。否則,執行else子句,計算校驗和。else子句的第一行定義了一個叫acc的val并用新建的ChecksumAccumulator實例初始化它。下一行是個for表達式,對傳入字串的每個字符循環一次,并在其上調用toByte把字符轉換成Byte,然后傳遞給acc所指的ChecksumAccumulator實例的add方法。完成了for表達式后,下一行的方法在acc上調用checksum,獲得傳入字串的校驗和,并存入叫做cs的val。下一行,"cache += (s -> cs)",傳入的字串鍵映射到整數的校驗和值,并把這個鍵-值對加入cache映射。方法的最后一個表達式,"cs",保證了校驗和為此方法的結果。
【伴生類和伴生對象】
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Scala伴生类和伴生对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scala Case类和对象
- 下一篇: Scala中的trait特质