函数
Scala中函数即对象,沟通函数式编程成与面向对象编程的桥梁就是apply方法。通过apply方法,函数调用能够写成Func()这种函数式编程的风格。
Funcion定义:参数 => 函数体
匿名函数:(x: Int) => x + 1
给函数命名:val addOne = (x: Int) => x + 1
对于匿名函数,当参数可知的情况下,参数列表可省略,只需要提供函数体,需要做的是参数必须用下划线表示,例如:
val salaries = Seq(20000, 70000, 40000)
val newSalaries = salaries.map(_ * 2)
Methods
与Function的不同点:methods通过def定义
方法体的最后一行为返回值,方法不一定需要参数如:
def name: String = System.getProperty("user.name")
Method可以嵌套定义
def factorial(x: Int): Int = {
def fact(x: Int, accumulator: Int): Int = {
if (x <= 1) accumulator
else fact(x - 1, x * accumulator)
}
fact(x, 1)
}
Method也可以作为参数,当Method作为参数时,scala自动将其转换为Function
case class WeeklyWeatherForecast(temperatures: Seq[Double]) {
private def convertCtoF(temp: Double) = temp * 1.8 + 32
def forecastInFahrenheit: Seq[Double] = temperatures.map(convertCtoF) // <-- passing the method convertCtoF
}