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

Function object

The orElse method for partial function and curried method for a normal function earlier are just two examples of function-related methods predefined in the standard library.

Similar to the curried method defined for every function instance (except Function0 and Function1) there is another one, tupled, which converts a function of N arguments into the function of one argument which is a TupleN

Besides that, there is a companion object, scala.Function, that incorporates a few methods that are useful for higher order functional programming, most notably a const function, which always returns its argument, and a chain function, which combines a list of functions into a single function as in the following example:

val upper = (_: String).toUpperCase
def fill(c: Char) = c.toString * (_: String).length
def filter(c: Char) = (_: String).filter(_ == c)

val chain = List(upper, filter('L'), fill('*'))
val allAtOnce = Function.chain(chain)

scala> allAtOnce("List(upper, filter('a'), fill('C'))")
res11: String = ****

allAtOnce is a function that is similar to the one that could be constructed by combining our three original functions with andThen (which is defined in the FunctionN trait):

val static = upper andThen filter('a') andThen fill('C')

But allAtOnce is built in a dynamic manner.

主站蜘蛛池模板: 库尔勒市| 寿光市| 台东县| 翁牛特旗| 共和县| 齐齐哈尔市| 安福县| 孝义市| 固始县| 准格尔旗| 沅陵县| 巨鹿县| 临颍县| 淳化县| 获嘉县| 浦县| 四会市| 沽源县| 汝阳县| 临高县| 宜宾市| 左贡县| 潞城市| 铅山县| 光泽县| 义乌市| 凤城市| 五寨县| 灵丘县| 天峻县| 蓬溪县| 涿鹿县| 喀什市| 兴义市| 深圳市| 临泉县| 陵水| 凭祥市| 桃源县| 康平县| 石泉县|