
【32】kotlin 科理化(Currying) 函数调用链
发布日期:2021-05-07 18:51:31
浏览次数:24
分类:精选文章
本文共 1280 字,大约阅读时间需要 4 分钟。
理解Currying概念
Currying是一种函数编程的技术,将多元函数转换为一元函数的调用链。这意味着我们可以将一个接受多个参数的函数拆分成多个一步步接受单一参数的函数,从而简化调用过程。
Currying的实现方法
Currying可以通过递归或高阶函数来实现。例如:
fun log(tag: String) = fun(target: OutputStream) = fun(message: Any?) = target.write("[$tag] $message\n".toByteArray())
实例1
package com.yzdzy.kotlin.chapter5.curryingfun hello(x: String, y: Int, z: Double): Boolean { return true}fun currideHello(x: String): (y: Int) -> (z: Double) -> Boolean { // 这里可以对x进行处理,然后逐步传递参数}
实例2
package com.yzdzy.kotlin.chapter5.curryingimport java.io.OutputStreamfun log(tag: String, target: OutputStream, message: Any?): Boolean { target.write("[$tag] $message\n".toByteArray())}fun log(tag: String) = fun(target: OutputStream) = fun(message: Any?) = target.write("[$tag] $message\n".toByteArray())
实例3
package com.yzdzy.kotlin.chapter5.curryingimport java.io.OutputStreamfun log(tag: String, target: OutputStream, message: Any?): Boolean { target.write("[$tag] $message\n".toByteArray())}fun log(tag: String) = fun(target: OutputStream) = fun(message: Any?) = target.write("[$tag] $message\n".toByteArray())
使用Currying
fun main(args: Array) { log("benny", System.out, "Hello world") log("benny")(System.out)("Hello world again")}
通过Currying,我们可以将复杂的函数调用转换为更易于管理的链式调用,从而简化代码结构并提升可读性。