Define a small method and call it from main.

method-basics A method names reusable work. Calling the method runs its body and returns a value.

Method Basics

number
MethodBasics.scala
Replay: real traced execution (multi-file project)
object Main {
  def double(value: Int): Int = {
    value * 2
  }

  def main(args: Array[String]): Unit = {
    val number = 4
    val result = double(number)

    println("number=" + number)
    println("result=" + result)
  }
}
object Main {
  def double(value: Int): Int = {
    value * 2
  }

  def main(args: Array[String]): Unit = {
    val number = 2
    val result = double(number)

    println("number=" + number)
    println("result=" + result)
  }
}
object Main {
  def double(value: Int): Int = {
    value * 2
  }

  def main(args: Array[String]): Unit = {
    val number = 7
    val result = double(number)

    println("number=" + number)
    println("result=" + result)
  }
}
  1. number ← 4

    6def main(args: Array[String]): Unit = {7  val number→ 4 = 4 //@number=2, 78  val result = double(number4)910  println("number=" + number)
  2. def double(value: Int): Int =

    1object Main {2  def double(value4: Int): Int = {3    value4 * 24  }
  3. result ← 8

    7    val number = 4 //@number=2, 78    val result→ 8 = double(number4)910    println("number=" + number4)11    println("result=" + result8)12  }13}
    outputnumber=4
    result=8
  1. number ← 2

    6def main(args: Array[String]): Unit = {7  val number→ 2 = 28  val result = double(number2)910  println("number=" + number)
  2. def double(value: Int): Int =

    1object Main {2  def double(value2: Int): Int = {3    value2 * 24  }
  3. result ← 4

    7    val number = 28    val result→ 4 = double(number2)910    println("number=" + number2)11    println("result=" + result4)12  }13}
    outputnumber=2
    result=4
  1. number ← 7

    6def main(args: Array[String]): Unit = {7  val number→ 7 = 78  val result = double(number7)910  println("number=" + number)
  2. def double(value: Int): Int =

    1object Main {2  def double(value7: Int): Int = {3    value7 * 24  }
  3. result ← 14

    7    val number = 78    val result→ 14 = double(number7)910    println("number=" + number7)11    println("result=" + result14)12  }13}
    outputnumber=7
    result=14

Follow the Method

  1. number starts as 4.
  2. double(number) passes 4 into the method.
  3. Inside double, value is 4.
  4. The method returns value * 2, which is 8.
  5. The caller stores that value in result. | number | method input | returned result | | --- | --- | --- | | 4 | 4 | 8 | | 2 | 2 | 4 | | 7 | 7 | 14 |

Exercise: MethodBasics.scala

Reproduce number=4 and result=8, then use the pinned number variants 2 and 7 to predict result=4 and result=14.