一 函数是第一等公民
1、把函数作为实参传递给另外一个函数。
2、把函数作为返回值。
3、把函数赋值给变量。
4、把函数存储在数据结构里。
在Scala中,函数就像普通变量一样,同样也具有函数的类型。
二 函数类型
1、定义
在Scala语言中,函数类型的格式为A =>B,表示一个接受类型A的参数,并返回类型B的函数。
例子:Int => String 是把整型映射为字符串的函数类型
2、代码
package test_first
object DemoextendsApp{
println( apply( layout,10))
// 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
def apply(f:Int=>String, v:Int)= f(v)
def layout(x:Int)="["+ x.toString()+"]"
def operate(f:(Int,Int)=>Int)={f(4,4)}
def add(x:Int,y:Int)=x+y
println(operate(add))
def greeting()=(name:String)=>{"hello"+" "+ name}
val test = greeting()
println(test("cakin24"))
def multiplyBy(factor:Double)=(x:Double)=>factor*x
val x=multiplyBy(10)
println(x(50))
}
3、运行结果
[10]
8
hello cakin24
500.0
三 高阶函数
1、定义
用函数作为形参或返回值的函数,称为高阶函数。
def operate(f:(Int,Int)=>Int)={f(4,4)}
def greeting() =(name:String) =>{"hello" + " " + name}
2、代码
package test_first
object DemoextendsApp{
println( apply( layout,10))
// 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
def apply(f:Int=>String, v:Int)= f(v)
def layout(x:Int)="["+ x.toString()+"]"
}
3、运行结果
[10]
四 匿名函数
就是函数常量,也称为函数文字量。
在Scala里,匿名函数的定义格式为
(形参列表) =>{函数体}
箭头左边是参数列表,右边是函数体。
使用匿名函数后,我们的代码变得更简洁了。
1、匿名函数为1个参数。
var inc = (x:Int) => x+1
以上实例的 inc 现在可作为一个函数,使用方式如下:
var x = inc(7)-1
2、匿名函数中定义多个参数:
var mul = (x: Int, y: Int) => x*y
mul 现在可作为一个函数,使用方式如下:
println(mul(3, 4))
3、不给匿名函数设置参数,如下所示:
var userDir = () => { System.getProperty("user.dir") }
userDir 现在可作为一个函数,使用方式如下:
println( userDir() )
五 匿名函数实例
package test_first
object DemoextendsApp{
var factor =3
val multiplier =(i:Int)=> i * factor
println("multiplier(1) value = "+ multiplier(1))
println("multiplier(2) value = "+ multiplier(2))
}
六 匿名函数实例
multiplier(1) value = 3
multiplier(2) value = 6
相关推荐
在Scala中,匿名函数就是闭包的一个例子,它可以访问定义它的作用域内的变量。 函数式数据结构 Scala提供了许多不可变的数据结构,如List、Set、Map等,它们遵循函数式编程的原则,即在创建后不能被修改。这些数据...
Scala的函数式编程(FP)不仅包括高阶函数、匿名函数、递归和模式匹配等,还提供了不可变数据结构和纯函数等核心概念。本文将详细介绍如何使用Scala脚本进行函数式编程,并提供丰富的代码示例。 Scala的函数式编程...
λ表达式(匿名函数)和闭包也是重要的概念。 5. **类型推断**:Scala具有强大的类型推断能力,程序员在编写代码时可以减少显式的类型声明,提升代码的简洁性。 6. **集合库**:Scala的集合库非常强大,提供了各种...
总之,深入理解Scala函数式编程过程包括掌握函数定义、递归、高阶函数和匿名函数的使用。通过这些概念,我们可以编写出更加模块化和灵活的代码,同时减少冗余,提高代码的复用性。在实际开发中,这些技能对于构建...
在Scala中,lambda函数(匿名函数)是第一类公民,可以直接赋值、作为参数传递或作为返回值。Lambda函数的类型对应于逻辑中的命题,函数应用对应于逻辑上的蕴含,即如果有一个函数f和一个值x,那么f(x)表示的是命题f...
scala是一种基于JVM的面向对象的函数编程,scala编程相对于...2:函数式编程,柯里化函数,匿名函数,高阶函数等。 3:代码行简单。 4:支持并发控制,Actor Model机制 5:目前比较流行的kafka,spark均由scala开发。
在这个主题中,我们将深入探讨 Scala 的高级特性,包括高阶函数和隐式转换。 高阶函数 高阶函数是 Scala 中一个非常强大的功能,它允许函数作为参数传递给其他函数,并且可以返回函数作为结果。在函数式编程语言中...
3. **函数式编程**:Scala是函数式编程的强大平台,它提供了高阶函数、匿名函数、柯里化、尾递归优化等功能。函数在Scala中被视为一等公民,可以作为参数传递,也可以作为返回值。 4. **集合库**:Scala的集合库是...
最后,"Scala进阶之路-part05-高级语法.pdf"将探讨Scala的一些高级特性,如类型推断、高阶函数、匿名函数、 currying、偏函数、类型系统(如类型别名、类型参数和类型成员)以及元编程。这部分内容将提升你的编程...
4. **匿名函数**:不使用名称的函数称为匿名函数,可以写作 `(x: Int) => x + 1`。匿名函数可以用于函数式编程中的高阶函数,例如作为其他函数的参数或赋值给不变量。 5. **部分应用函数**:通过使用下划线 `_`,你...
例如,你可以定义一个类,创建对象,同时利用匿名函数进行计算。了解这些基本语法将使你能够编写出简洁而富有表达力的代码。 其次,Scala的类型系统是其强大之处。它支持静态类型,同时具备类型推断,使得代码更易...
函数使用`def`关键字定义,支持高阶函数和匿名函数(lambda表达式)。 4. **集合框架**:Scala的集合库非常强大,包含了列表、数组、映射(Map)、集(Set)等多种数据结构。它们支持函数式编程操作,如map、filter...
它的语法简洁,支持高阶函数、模式匹配、匿名函数、类型推断等特性,使得代码更加简洁和易于理解。 2. 版本2.12.x: Scala的版本号通常以主版本号.次版本号.修订号的形式表示。2.12.x系列是Scala的一个主要分支,...
函数式编程方面,Scala提供了高阶函数、匿名函数、柯里化、闭包以及强大的函数式数据结构如List、Set和Map。书中会介绍如何使用这些功能编写纯函数,理解函数式编程的核心理念,如不可变性、副作用最小化和函数组合...
Scala支持匿名函数和高阶函数,这些特性使其非常适合函数式编程。 #### 总结 Scala作为一种融合了面向对象与函数式编程的现代化语言,在大数据处理、Web开发等多个领域展现出巨大的潜力。通过本文档的学习,读者...
同时,Scala还有匿名函数(lambda表达式),如`(x: Int) => x + 1`,这在处理函数式接口时非常方便。 Scala的模式匹配是另一大亮点。通过case语句,我们可以对不同数据结构进行解构和分析,这对于处理复杂的数据和...
函数定义可以使用匿名函数和高阶函数,类和对象通过case class和trait实现。 **2. 面向对象编程** Scala的面向对象特性包括类、继承、封装和多态。类通过`class`关键字定义,可以有构造器、方法和属性。继承使用`...
3. **函数式编程**:Scala支持高阶函数、匿名函数、柯里化以及不可变数据结构,这些都是函数式编程的核心概念。函数式编程有助于编写无副作用、可测试和并行友好的代码。 4. ** Actors模型**:Scala内建对Akka框架...
3. **函数式编程**:Scala是函数式的,它支持高阶函数、匿名函数、闭包以及模式匹配等特性。函数可以作为一等公民,这意味着它们可以被赋值给变量,作为参数传递,或者作为返回值。 4. **Actor模型**:Scala集成了...