In this topic, we will see what are Functions and Anonymous Functions.

## Functions

Let us understand more about Functions in Scala.

- A function is a group of statements that perform a task
- We need to give function name, arguments and argument types for regular functions
- Functions are expressions (not statements)
- Functions can be returned, passed as arguments.

Syntax

def functionName(parameters : typeofparameters) : returntypeoffunction = { // statements to be executed }

## Example

def sum(lb: Int, ub: Int)={ var total =0 for (element <- lb to ub) { total += element } total }

sum(1,10)

## Problem Statement

Display the output for given statements

- Sum of numbers in a given range
- Sum of squares of numbers in a given range
- Sum of cubes of numbers in a given range
- Sum of multiples of 2 in a given range.

## Example

def sum(func: Int => Int, lb:Int, ub:Int)= { var total = 0 for(element <- lb to ub) { total += func(element) } total }

def id(i: Int)= i def sqr(i: Int)= i * i def cube(i: Int)= i * i * i def double(i: Int)= i * 2 sum(id, 1, 10) sum(sqr, 1, 10) sum(cube, 1, 10) sum(double, 1, 10)

## Anonymous Functions

- Anonymous functions need not have a name associated with it
- Anonymous functions can be assigned to variables
- Those variables can be passed as parameters
- While invoking we need to provide the functionality for the parameters which are defined as functions (for parameter
**i**in this case)

sum(i => i, 1, 10) sum(i => i * i, 1, 10) sum(i => i * i * i, 1, 10) sum(i => i * 2, 1, 10)