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
    } + 2

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 *