iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

連續30天 初學者介紹Scala語言系列 第 9

[Day 09]Scala 類別與物件 Part 2

  • 分享至 

  • xImage
  •  

今天繼續介紹Scala的類別

  • 輔助建構函式(Auxiliary constructors)
  • 單例物件(Singleton objects)

輔助建構式(Auxiliary constructor)

在Scala的類別裡頭,有時候我們需要多個建構式來定義類別,除了主建構式外的其他建構式,我們就稱為輔助建構式。
輔助建構式以def this...開頭
另外,輔助建構式有以下幾個規定:

  1. Each auxiliary constructor must have a different signature (different parameter lists)
  2. Each constructor must call one of the previously defined constructors

也就是說:
1.每個Auxiliary constructor必須有不同的參數列表
2.每個Auxiliary cinstructor必須呼叫前面定義的建構式(
主建構式或是其他的輔助建構式)
舉例如下:

val sauce = "tomato"
val cookingTime = "12"

class Pasta(sauce: String, cookingTime: Int){
    def this(sauce: String) = this(sauce, 0)
    def this(cookingTime: Int) = this("pesto", cookingTime)
}

接著我們就可以用以下幾個方式來建立Pasta實體

val p1 = new Pasta(sauce, cookingTime)
val p2 = new Pasta(sauce)
val p3 = new Pasta(cookingTime)

單例物件(Singleton objects)

由於Scala不允許有靜態成員(static member),所以Scala提供了單例物件(Singleton objects)。

  1. 單例物件的定義類似於類別的定義,不過關鍵字換成object
  2. 一個單例物件只有一個實體(instance)
  3. 單例物件應用於程式必須提供服務或操作的單一入口,像是作為物件工廠(Object factory)、執行時期僅需唯一實例的資源

舉例:

object Logger:
  def info(message: String): Unit = println(s"INFO: $message")

今天先介紹到這邊
/images/emoticon/emoticon70.gif


上一篇
[Day 08]Scala 類別與物件 Part 1
下一篇
[Day 10]Scala 類別與物件 Part 3
系列文
連續30天 初學者介紹Scala語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言