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

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.

主站蜘蛛池模板: 泸州市| 乌拉特前旗| 罗源县| 汉寿县| 龙岩市| 怀仁县| 银川市| 阆中市| 浮山县| 平凉市| 宜章县| 洪洞县| 冷水江市| 漳浦县| 霸州市| 全椒县| 甘肃省| 望江县| 德江县| 韶关市| 永德县| 冀州市| 长兴县| 武汉市| 朔州市| 新巴尔虎右旗| 城固县| 山阳县| 同江市| 抚松县| 定边县| 隆林| 社旗县| 米泉市| 喀喇沁旗| 临漳县| 西城区| 清河县| 炉霍县| 临沭县| 嵊泗县|