Reading : http://twitter.github.io/scala_school/
def f1(x : Int) : Int = x+1
def fact( z: Int) : Int = z* fact(z-1)
Anonymous functions
-------------------
scala> val addOne = (x: Int) => x + 1
addOne: (Int) => Int = <function1>
scala> addOne(1)
res4: Int = 2
def timesTwo(i: Int): Int = {
println("hello world")
i * 2
}
Partial application
-------------------
scala> def adder(m: Int, n: Int) = m + n
adder: (m: Int,n: Int)Int
scala> val add2 = adder(2, _:Int)
add2: (Int) => Int = <function1>
scala> add2(3)
res50: Int = 5
Curried functions
-----------------
scala> def multiply(m: Int)(n: Int): Int = m * n
multiply: (m: Int)(n: Int)Int
You can take any function of multiple arguments and curry it.
scala> val curriedAdd = (adder _).curried
curriedAdd: Int => (Int => Int) = <function1>
scala> val addTwo = curriedAdd(2)
addTwo: Int => Int = <function1>
scala> addTwo(4)
res22: Int = 6
Variable length arguments
-------------------------
def capitalizeAll(args: String*) = {
args.map { arg =>
arg.capitalize
}
}
scala> capitalizeAll("rarity", "applejack")
res2: Seq[String] = ArrayBuffer(Rarity, Applejack)
Classes
-------
scala> class Calculator {
| val brand: String = "HP"
| def add(m: Int, n: Int): Int = m + n
| }
defined class Calculator
scala> val calc = new Calculator
calc: Calculator = Calculator@e75a11
http://jim-mcbeath.blogspot.in/2009/05/scala-functions-vs-methods.html
def f1(x : Int) : Int = x+1
def fact( z: Int) : Int = z* fact(z-1)
Anonymous functions
-------------------
scala> val addOne = (x: Int) => x + 1
addOne: (Int) => Int = <function1>
scala> addOne(1)
res4: Int = 2
def timesTwo(i: Int): Int = {
println("hello world")
i * 2
}
Partial application
-------------------
scala> def adder(m: Int, n: Int) = m + n
adder: (m: Int,n: Int)Int
scala> val add2 = adder(2, _:Int)
add2: (Int) => Int = <function1>
scala> add2(3)
res50: Int = 5
Curried functions
-----------------
scala> def multiply(m: Int)(n: Int): Int = m * n
multiply: (m: Int)(n: Int)Int
You can take any function of multiple arguments and curry it.
scala> val curriedAdd = (adder _).curried
curriedAdd: Int => (Int => Int) = <function1>
scala> val addTwo = curriedAdd(2)
addTwo: Int => Int = <function1>
scala> addTwo(4)
res22: Int = 6
Variable length arguments
-------------------------
def capitalizeAll(args: String*) = {
args.map { arg =>
arg.capitalize
}
}
scala> capitalizeAll("rarity", "applejack")
res2: Seq[String] = ArrayBuffer(Rarity, Applejack)
Classes
-------
scala> class Calculator {
| val brand: String = "HP"
| def add(m: Int, n: Int): Int = m + n
| }
defined class Calculator
scala> val calc = new Calculator
calc: Calculator = Calculator@e75a11
http://jim-mcbeath.blogspot.in/2009/05/scala-functions-vs-methods.html