加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

[Scala进阶]--匿名函数和高阶函数

发布时间:2020-12-16 09:38:54 所属栏目:安全 来源:网络整理
导读:感谢原文链接:http://www.voidcn.com/article/p-xdgcpgzu-bqq.html Scala版本:2.10.5 一 函数是第一等公民 1、把函数作为实参传递给另外一个函数。 2、把函数作为返回值。 3、把函数赋值给变量。 4、把函数存储在数据结构里。 在Scala中,函数就像普通变量

感谢原文链接:http://www.voidcn.com/article/p-xdgcpgzu-bqq.html

Scala版本:2.10.5

一 函数是第一等公民

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

    参考:https://blog.csdn.net/lyflower/article/details/7484688

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读