Skip to content
Related Articles

Related Articles

Scala | Nested Functions
  • Difficulty Level : Hard
  • Last Updated : 05 Nov, 2019

A function definition inside an another function is known as Nested Function. It is not supported by C++, Java, etc. In other languages, we can call a function inside a function, but it’s not a nested function. In Scala, we can define functions inside a function and functions defined inside other functions are called nested or local functions.
Syntax:

def FunctionName1( perameter1, peramete2, ..) = {
def FunctionName2() = {
// code
}
}

Single Nested Function
Here is an example of single nested function that takes two numbers as parameters and returns the Maximum and Minimum of them.
Example




// Scala program of Single Nested Function
object MaxAndMin 
{
    // Main method
    def main(args: Array[String]) 
    {
        println("Min and Max from 5, 7")
                maxAndMin(5, 7);
    }
      
    // Function
    def maxAndMin(a: Int, b: Int) = {
      
       // Nested Function
       def maxValue() =
          if(a > b) 
          {
              println("Max is: " + a)
          }
          else
          {
              println("Max is: " + b)
          }
       }
      
       // Nested Function
       def minValue() = {
          if (a < b)
          {
              println("Min is: " + a)
          }
          else
          {
              println("Min is: " + b)
          }
       }
       maxValue();
       minValue();
    }
}

Output

Min and Max from 5, 7
Max is: 7
Min is: 5

In above code maxAndMin is a function and maxValue is another inner function returns maximum value between a and b similarly minValue is another inner function which is also nested function this function returns minimum value between a and b.
Multiple Nested Function
Here is an implementation of multiple nested function.
Example




// Scala program of Multiple Nested Function
object MaxAndMin 
{
    // Main method
    def main(args: Array[String]) 
    {
        fun();
    }
      
    // Function 
    def fun() = {
          
        geeks();
          
        // First Nested Function 
        def geeks() = {
            println("geeks");
              
            gfg();
              
            // Second Nested Function 
            def gfg() = {
                println("gfg");
  
                geeksforgeeks();
  
                // Third Nested Function 
                def geeksforgeeks() = {
                    println("geeksforgeeks");
                }
            }
        }
    }
}

Output

geeks
gfg
geeksforgeeks

In above code fun is a function and geeks, gfg, geeksforgeeks are nested functions or local function .




My Personal Notes arrow_drop_up
Recommended Articles
Page :