The definitions within a block are visible from within the block only. The definitions within a block shadow definitions with the same names that belong to the block’s outer scope. The block has a value just as any other expression. Its value is the value of the last expression it includes.

object Program
{
  def main(args: Array[String]):Unit =
  {
    val a = 4
    def func(num:Int) = num*num
    val number =
    {
      val b = func(4)
      val a = 6
      a+b
    } + 2
    println(number)
  }
}

The following video clip goes over the code sample and explains it.

Leave a Reply

Your email address will not be published. Required fields are marked *