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

  • 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.

主站蜘蛛池模板: 阳东县| 莲花县| 昔阳县| 当涂县| 兴业县| 吐鲁番市| 新余市| 濮阳县| 隆安县| 清丰县| 衢州市| 临漳县| 大荔县| 沙坪坝区| 徐闻县| 张家口市| 交城县| 澎湖县| 鲁甸县| 呈贡县| 冷水江市| 郓城县| 古田县| 上杭县| 揭西县| 万州区| 清镇市| 贡觉县| 惠来县| 杭锦旗| 勐海县| 南昌县| 宣武区| 临沭县| 都昌县| 民勤县| 剑阁县| 南澳县| 汶川县| 奉贤区| 正安县|