`
cakin24
  • 浏览: 1388822 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Scala函数和匿名函数

阅读更多

一 函数是第一等公民

1、把函数作为实参传递给另外一个函数。
2、把函数作为返回值。
3、把函数赋值给变量。
4、把函数存储在数据结构里。
在Scala中,函数就像普通变量一样,同样也具有函数的类型。
 
二 函数类型
1、定义
在Scala语言中,函数类型的格式为A =>B,表示一个接受类型A的参数,并返回类型B的函数。
例子:Int => String 是把整型映射为字符串的函数类型
2、代码
  1. package test_first
  2. object DemoextendsApp{
  3. println( apply( layout,10))
  4. // 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
  5. def apply(f:Int=>String, v:Int)= f(v)
  6. def layout(x:Int)="["+ x.toString()+"]"
  7. def operate(f:(Int,Int)=>Int)={f(4,4)}
  8. def add(x:Int,y:Int)=x+y
  9. println(operate(add))
  10. def greeting()=(name:String)=>{"hello"+" "+ name}
  11. val test = greeting()
  12. println(test("cakin24"))
  13. def multiplyBy(factor:Double)=(x:Double)=>factor*x
  14. val x=multiplyBy(10)
  15. println(x(50))
  16. }
3、运行结果
[10]
8
hello cakin24
500.0
 
三 高阶函数
1、定义
用函数作为形参或返回值的函数,称为高阶函数。
def operate(f:(Int,Int)=>Int)={f(4,4)}
def greeting() =(name:String) =>{"hello" + " " + name}
2、代码
  1. package test_first
  2. object DemoextendsApp{
  3. println( apply( layout,10))
  4. // 函数 f 和 值 v 作为参数,而函数 f 又调用了参数 v
  5. def apply(f:Int=>String, v:Int)= f(v)
  6. def layout(x:Int)="["+ x.toString()+"]"
  7. }
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() )
 
五 匿名函数实例
  1. package test_first
  2. object DemoextendsApp{
  3. var factor =3
  4. val multiplier =(i:Int)=> i * factor
  5. println("multiplier(1) value = "+ multiplier(1))
  6. println("multiplier(2) value = "+ multiplier(2))
  7. }
 
六 匿名函数实例
multiplier(1) value = 3
multiplier(2) value = 6
分享到:
评论

相关推荐

    Scala函数式编

    在Scala中,匿名函数就是闭包的一个例子,它可以访问定义它的作用域内的变量。 函数式数据结构 Scala提供了许多不可变的数据结构,如List、Set、Map等,它们遵循函数式编程的原则,即在创建后不能被修改。这些数据...

    Scala脚本:函数式编程的实用指南

    Scala的函数式编程(FP)不仅包括高阶函数、匿名函数、递归和模式匹配等,还提供了不可变数据结构和纯函数等核心概念。本文将详细介绍如何使用Scala脚本进行函数式编程,并提供丰富的代码示例。 Scala的函数式编程...

    Scala编程 pdf

    λ表达式(匿名函数)和闭包也是重要的概念。 5. **类型推断**:Scala具有强大的类型推断能力,程序员在编写代码时可以减少显式的类型声明,提升代码的简洁性。 6. **集合库**:Scala的集合库非常强大,提供了各种...

    深入理解Scala函数式编程过程

    总之,深入理解Scala函数式编程过程包括掌握函数定义、递归、高阶函数和匿名函数的使用。通过这些概念,我们可以编写出更加模块化和灵活的代码,同时减少冗余,提高代码的复用性。在实际开发中,这些技能对于构建...

    curryhoward:通过Curry-Howard同构为Scala函数和表达式自动生成代码

    在Scala中,lambda函数(匿名函数)是第一类公民,可以直接赋值、作为参数传递或作为返回值。Lambda函数的类型对应于逻辑中的命题,函数应用对应于逻辑上的蕴含,即如果有一个函数f和一个值x,那么f(x)表示的是命题f...

    spark源码之scala基础语法demo

    scala是一种基于JVM的面向对象的函数编程,scala编程相对于...2:函数式编程,柯里化函数,匿名函数,高阶函数等。 3:代码行简单。 4:支持并发控制,Actor Model机制 5:目前比较流行的kafka,spark均由scala开发。

    scala高级特性

    在这个主题中,我们将深入探讨 Scala 的高级特性,包括高阶函数和隐式转换。 高阶函数 高阶函数是 Scala 中一个非常强大的功能,它允许函数作为参数传递给其他函数,并且可以返回函数作为结果。在函数式编程语言中...

    Scala-2.11.1.zip

    3. **函数式编程**:Scala是函数式编程的强大平台,它提供了高阶函数、匿名函数、柯里化、尾递归优化等功能。函数在Scala中被视为一等公民,可以作为参数传递,也可以作为返回值。 4. **集合库**:Scala的集合库是...

    最好的scala学习 课件

    最后,"Scala进阶之路-part05-高级语法.pdf"将探讨Scala的一些高级特性,如类型推断、高阶函数、匿名函数、 currying、偏函数、类型系统(如类型别名、类型参数和类型成员)以及元编程。这部分内容将提升你的编程...

    scala教材.docx

    4. **匿名函数**:不使用名称的函数称为匿名函数,可以写作 `(x: Int) => x + 1`。匿名函数可以用于函数式编程中的高阶函数,例如作为其他函数的参数或赋值给不变量。 5. **部分应用函数**:通过使用下划线 `_`,你...

    Scala编程实战基础教程

    例如,你可以定义一个类,创建对象,同时利用匿名函数进行计算。了解这些基本语法将使你能够编写出简洁而富有表达力的代码。 其次,Scala的类型系统是其强大之处。它支持静态类型,同时具备类型推断,使得代码更易...

    scala编程入门教材

    函数使用`def`关键字定义,支持高阶函数和匿名函数(lambda表达式)。 4. **集合框架**:Scala的集合库非常强大,包含了列表、数组、映射(Map)、集(Set)等多种数据结构。它们支持函数式编程操作,如map、filter...

    scala-2.12.6.tgz

    它的语法简洁,支持高阶函数、模式匹配、匿名函数、类型推断等特性,使得代码更加简洁和易于理解。 2. 版本2.12.x: Scala的版本号通常以主版本号.次版本号.修订号的形式表示。2.12.x系列是Scala的一个主要分支,...

    scala编程指南第三版

    函数式编程方面,Scala提供了高阶函数、匿名函数、柯里化、闭包以及强大的函数式数据结构如List、Set和Map。书中会介绍如何使用这些功能编写纯函数,理解函数式编程的核心理念,如不可变性、副作用最小化和函数组合...

    Scala实战.docx

    Scala支持匿名函数和高阶函数,这些特性使其非常适合函数式编程。 #### 总结 Scala作为一种融合了面向对象与函数式编程的现代化语言,在大数据处理、Web开发等多个领域展现出巨大的潜力。通过本文档的学习,读者...

    scala 文档

    同时,Scala还有匿名函数(lambda表达式),如`(x: Int) => x + 1`,这在处理函数式接口时非常方便。 Scala的模式匹配是另一大亮点。通过case语句,我们可以对不同数据结构进行解构和分析,这对于处理复杂的数据和...

    Scala(中文完整版).zip

    函数定义可以使用匿名函数和高阶函数,类和对象通过case class和trait实现。 **2. 面向对象编程** Scala的面向对象特性包括类、继承、封装和多态。类通过`class`关键字定义,可以有构造器、方法和属性。继承使用`...

    scala-2.10.5.tgz

    3. **函数式编程**:Scala支持高阶函数、匿名函数、柯里化以及不可变数据结构,这些都是函数式编程的核心概念。函数式编程有助于编写无副作用、可测试和并行友好的代码。 4. ** Actors模型**:Scala内建对Akka框架...

    scala 学习资料

    3. **函数式编程**:Scala是函数式的,它支持高阶函数、匿名函数、闭包以及模式匹配等特性。函数可以作为一等公民,这意味着它们可以被赋值给变量,作为参数传递,或者作为返回值。 4. **Actor模型**:Scala集成了...

Global site tag (gtag.js) - Google Analytics