Scala | Nested Functions

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 .

Previous
Next