Call a method on a single shared object.

singleton-object An object defines one shared instance. It is useful for constants and stateless helpers.

Singleton Objects

amount
SingletonObject.scala
Replay: real traced execution (multi-file project)
object FeeRules {
  val fee = 2

  def addFee(amount: Int): Int = {
    amount + fee
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 10
    val total = FeeRules.addFee(amount)

    println("amount=" + amount)
    println("total=" + total)
  }
}
object FeeRules {
  val fee = 2

  def addFee(amount: Int): Int = {
    amount + fee
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 4
    val total = FeeRules.addFee(amount)

    println("amount=" + amount)
    println("total=" + total)
  }
}
object FeeRules {
  val fee = 2

  def addFee(amount: Int): Int = {
    amount + fee
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 20
    val total = FeeRules.addFee(amount)

    println("amount=" + amount)
    println("total=" + total)
  }
}
  1. amount ← 10

    9object Main {10  def main(args: Array[String]): Unit = {11    val amount→ 10 = 10 //@amount=4, 2012    val total = FeeRules.addFee(amount10)1314    println("amount=" + amount)
  2. def addFee(amount: Int): Int =

    4  def addFee(amount10: Int): Int = {5    amount10 + fee26  }7}
  3. total ← 12

    11    val amount = 10 //@amount=4, 2012    val total→ 12 = FeeRules.addFee(amount10)1314    println("amount=" + amount10)15    println("total=" + total12)16  }17}
    outputamount=10
    total=12
  1. amount ← 4

    9object Main {10  def main(args: Array[String]): Unit = {11    val amount→ 4 = 412    val total = FeeRules.addFee(amount4)1314    println("amount=" + amount)
  2. def addFee(amount: Int): Int =

    4  def addFee(amount4: Int): Int = {5    amount4 + fee26  }7}
  3. total ← 6

    11    val amount = 412    val total→ 6 = FeeRules.addFee(amount4)1314    println("amount=" + amount4)15    println("total=" + total6)16  }17}
    outputamount=4
    total=6
  1. amount ← 20

    9object Main {10  def main(args: Array[String]): Unit = {11    val amount→ 20 = 2012    val total = FeeRules.addFee(amount20)1314    println("amount=" + amount)
  2. def addFee(amount: Int): Int =

    4  def addFee(amount20: Int): Int = {5    amount20 + fee26  }7}
  3. total ← 22

    11    val amount = 2012    val total→ 22 = FeeRules.addFee(amount20)1314    println("amount=" + amount20)15    println("total=" + total22)16  }17}
    outputamount=20
    total=22