• scala学习笔记:高阶函数


    scala> def power(y:Double)=(x:Double)=>Math.pow(x,y)
    warning: there were 1 deprecation warnings; re-run with -deprecation for details
    power: (y: Double)Double => Double
    
    
    scala> val square=power(2)
    square: Double => Double = <function1>
    
    
    scala> val squareRoot=power(0.5)
    squareRoot: Double => Double = <function1>
    
    
    scala> square(10)
    res0: Double = 100.0
    
    
    scala> squareRoot(100)
    res1: Double = 10.0

    也可以定义成:

    scala> def power = (x:Double)=> ((y:Double) => math.pow(x, y))
    power: Double => Double => Double
    
    scala> power(4)(3)
    res8: Double = 64.0

    也可以写成:

    scala> :paste
    // Entering paste mode (ctrl-D to finish)
    
    def power(x:Double,y:Double) = math.pow(x, y)
    def square=power(_:Double,2)
    def squareroot(x:Double)=power(x,0.5)
    square(3)
    squareroot(3)
    
    // Exiting paste mode, now interpreting.
    
    power: (x: Double, y: Double)Double
    square: Double => Double
    squareroot: (x: Double)Double
    res8: Double = 1.7320508075688772

    柯里化之后:

    def power(x:Double)(y:Double) = math.pow(x, y)
    def square=power(_:Double)(2)
    square(3)
    def squareroot(x:Double)=power(x)(0.5)
    squareroot(3)
    power: (x: Double)(y: Double)Double
    square: Double => Double
    squareroot: (x: Double)Double
    res7: Double = 1.7320508075688772
  • 相关阅读:
    【区间DP&&记忆化搜索】乘法游戏
    洛谷P1608路径统计
    2021省选游记
    涂色计划P4170
    01迷宫及路径记录(DFS&&BFS)
    [YBTOJ递推算法强化训练4]序列个数
    C++关于string 的优先队列以及重载运算符
    浅谈C++STL容器
    集合的划分
    图的表示
  • 原文地址:https://www.cnblogs.com/bluejoe/p/5115875.html
Copyright © 2020-2023  润新知