 Open in App
Not now

# Scala | Nested Functions

• Difficulty Level : Hard
• Last Updated : 06 Jun, 2021

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( parameter1, parameter2, ..) = {
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

 `// 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

 `// 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