# Scala Functions: Examples and Reference

Last updated:

Here are some of the ways you can define and/or create functions in Scala:

### Simplest possible way

For functions which are only one line long.

def func1(a:Int,b:Int) =
a+b


### Functions with longer bodies

def func2(a:Int) = {
val foo = "bar"
val bar = "foo"
// return value
a * 2
}


### Assign a function to a variable

After you assign a function to a variable, you can call the apply method on that variable (that is, use it as if it were a function)

P.S.:Note that what actually gets assigned to the variable is an anonymous function - a function with no name, just a body.

val func3 = (a:Int, b:Int) =>
a + b


likewise, for longer functions:

val func4 = (a:Int, b:Int) => {
val sum = a + b
val average = sum / 2
average
}


### Recursive functions

Recursive functions require that you explicitly set their return type:

def factorial(n:Int) :Int = { //explicit return type needed or you'll get an Error
if (n == 0) 1
else n*factorial(n-1)
}


### Functions that take other functions as parameters

Functions in Scala can take other functions as parameters (and also return functions as the result of a Function).

// can you guess what this will do?
def applyToAll( func: Char => Char , str: String) = {
str.map(func)
}

applyToAll( c => c.toUpper, "foobarbaz")
// returns "FOOBARBAZ"


OBS.: There were tested against Scala 2.10.4