第八章 函数和闭包

  • 本地函数

    • 函数式编程风格的重要设计原则是程序应该被解构成若干个小的函数,但是这些帮助函数的名称可能会污染整个命名空间。
    • 解决这样问题的办法: 将小函数设置为私有方法,或者把函数定义在别的函数之内,就如同本地变量一样,这样的函数我们称为本地函数。
  • 头等函数

    • 不仅可以定义和调用函数,还可以将其写作匿名的字面量,并把它们作为值传递。
    • 函数自面量杯编译进类,并在运行期实例化为函数值。很类似于类(源代码)和对象(运行期)的关系
  • 函数字面量的缩写和占位符

    • => 左右两边有一侧能够推断出类型就能够缩写
    • 例如:
    someNumber.filter((x: Int) => x > 0);
    someNumber.filter((x) => x > 0);
    someNumber.filter(x => x > 0);
    someNumber.filter(_ > 0);
  • 闭包

    • def makeIncreaser(more: Int) = (x: Int) => x + more;
      这里more是个自由变量,而x是绑定变量。
  • 重复参数

    • 指明参数长度可变。
    • _* 这个标注会告诉编译器把其中每个元素当作参数,而不是当作单一的参数传递。
  • 尾递归

    • 最后一个动作调用自己的函数称为尾递归函数。
    • 尾递归具有较大的局限性,因为JVM指令集使实现更加先进的尾递归形式变得很困难。如果递归是间接的就没有优化的可能性了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值