# Scala - Anonymous Functions

Scala provides a relatively lightweight syntax for defining anonymous functions. Anonymous functions in source code are called **function literals** and at run time, function literals are instantiated into objects called **function values**.

Scala supports **first-class** functions, which means functions can be expressed in function literal syntax, i.e., (x: Int) => x + 1, and that functions can be represented by objects, which are called function values.

Try the following expression, it creates a successor function for integers −

var inc = (x:Int) => x+1

Variable inc is now a function that can be used the usual way −

var x = inc(7)-1

It is also possible to define functions with multiple parameters as follows −

var mul = (x: Int, y: Int) => x*y

Variable mul is now a function that can be used the usual way −

println(mul(3, 4))

It is also possible to define functions with no parameter as follows −

var userDir = () => { System.getProperty("user.dir") }

Variable userDir is now a function that can be used the usual way −

println( userDir )