美文网首页
《scala编程》第8章 函数和闭包

《scala编程》第8章 函数和闭包

作者: 富士山下裸奔 | 来源:发表于2018-04-29 21:38 被阅读0次
    love scala
    8.1 方法
    定义函数最常用的方式作为某个对象的成员,这样的函数称为方法。函数式编程的重要设计原则:程序应该被分解为许多个小函数, 每个函数都只做明确定义的任务

    8.2 局部函数(处理helper function问题)
    为什么要用局部函数?

    • 这些辅助函数helper function的名称会污染整个命名空间,一旦函数被装进可复用的类和对象中时,我们希望类的使用者不要看到这样的函数,而是直接使用类的功能
    • 通常希望在后续的工作中采用其他方式重写该类时,保留删除辅助函数helper function的灵活性
    • 除了局部变量,也可以用 private def (...)


      8.3 first-class function
      Scala 支持first-class function, 不仅可以定义def(...) 并调用函数,而且还可以用匿名的字面量编写函数并将它们进行传递(unnamed literals and then pass
      them around as values. 个人感觉有点像python 中的lambda函数风格)
      function literal vs function value
      前者被编译成类,并且试运行是实例化成函数值,函数字面量存在于源码(source code),而函数值以对象(object)的方式存在于运行时(at runtime),和类 classes (source code) 与对象objects (at runtime).

      8.4 字面量的short form
    • leave off the parameter types
      someNumbers.filter((x) => x > 0)
    • remove useless characters is to leave out parentheses around a parameter whose type is inferredsomeNumbers.filter(x => x > 0)
      8.5 占位符 _(Placeholder sysntax)
      val f = (_: Int) + (_: Int) _ + _ 将会展开一个参数接受两个参数的函数字面量。
      8.6 部分应用函数 partially applied functions
      somNumber.foreach(println (_)) 或者 somNumber.foreach(println _) 相当于
      someNumbers.foreach(x => println(x))

    相关文章

      网友评论

          本文标题:《scala编程》第8章 函数和闭包

          本文链接:https://www.haomeiwen.com/subject/mnvnlftx.html