官术网_书友最值得收藏!

  • Learn Scala Programming
  • Slava Schmidt
  • 202字
  • 2021-06-10 19:35:51

Summary

Functions represent another side of the blend of object-oriented and functional features in Scala. They can be defined in a number of ways, including the partial application of methods, function literals, and partial functions. Functions can be defined in any scope. If a function closes over variables available in scope, it is called closure.

Polymorphic functions implement an idea similar to polymorphism in object orientation, but apply that idea for types of parameters and of the result. This is called parametric polymorphism. It is especially useful when defining functions accepting other functions as arguments, so-called higher order functions.

There are two ways to implement recursion and only tail-recursive functions are stack safe in the JVM. For the functions which cannot be made tail-recursive, there is a way to represent the call chain in the heap by encoding it as objects. This approach is called trampolining and it is supported in the standard library.

Functions are first-class values in Scala because they are implemented as anonymous classes extending FunctionN traits. This not only makes it possible to work with functions as with normal variables, but it also allows for the provision of extended function implementations with additional properties, for example, a PartialFunction.

主站蜘蛛池模板: 涿鹿县| 景德镇市| 玉龙| 平度市| 来宾市| 疏附县| 门源| 平安县| 疏附县| 曲靖市| 平罗县| 冷水江市| 奉新县| 乡宁县| 井研县| 杭州市| 杭锦后旗| 巴中市| 丰县| 达孜县| 洞头县| 姚安县| 京山县| 石家庄市| 鄱阳县| 车致| 阿合奇县| 木兰县| 婺源县| 南汇区| 蒙山县| 庄浪县| 晋州市| 宝坻区| 大名县| 磴口县| 遂平县| 加查县| 广南县| 留坝县| 达日县|