4. Companion object - Gaoey/scala-diary GitHub Wiki
An object with the same name as a class is called a companion object.
ความสามารถ
A companion class or object can access the private members of its companion.
import scala.math._
case class Circle(radius: Double) {
import Circle._
def area: Double = calculateArea(radius)
}
object Circle {
private def calculateArea(radius: Double): Double = Pi * pow(radius, 2.0)
}
val circle1 = new Circle(5.0)
circle1.area
class Donut(name: String, productCode: Long){
def print = s"Donut name = $name, productCode = $productCode"
}
object Donut {
def apply(name: String, productCode: Long): Donut = {
new Donut(name, productCode)
}
}
val glazedDonut = Donut("Glazed Donut", 1111)
val vanillaDonut = Donut("Vanilla Donut", 2222)
glazedDonut.print should be("Donut name = Glazed Donut, productCode = 1111")
vanillaDonut.print should be("Donut name = Vanilla Donut, productCode = 2222")
Tips:
case classes will also create companion objects for you
case class Donut(name: String, productCode: Long){
def print = s"Donut name = $name, productCode = $productCode"
}
val test = Donut("test", 111)
test.print should be("Donut name = test, productCode = 111")