40. 科理化Currying

作者: 厚土火焱 | 来源:发表于2017-11-29 23:40 被阅读91次

科理化是把一个多参数的函数变成多个单参数的函数。

fun log(tag: String, target: OutputStream, message: Any?) {
    target.write("[$tag] $message\n".toByteArray())
}

fun log(tag: String)
        = fun(target: OutputStream)
        = fun(message: Any?)
                = target.write("[$tag] $message\n".toByteArray())

每个函数都是一个参数,看起来好清晰哦。上面两个函数真的一样吗?我们调用运行一下看看。

    log("Joel", System.out, "访问了首页。")
    log("Smith")(System.out)("访问了次页。")

运行的结果是

[Joel] 访问了首页。
[Smith] 访问了次页。

果然是一样的。
那么如果有返回参数怎么办呢?其实很简单的
例如

fun sing(who: String, shijian: String, where: String): String {
    return "$shijian ${who} 在 $where"
}

fun sing(who: String)
        = fun(shijian: String)
        = fun(where: String)
                = "$shijian ${who} 在 $where"

只要在最后一个等号写出你要返回的这个参数就好了。
调用如下

    println(sing("月亮", "晚上", "天上"))
    println(sing("太阳")("白天")("追月亮"))

运行结果是

晚上 月亮 在 天上
白天 太阳 在 追月亮

相关文章

  • 40. 科理化Currying

    科理化是把一个多参数的函数变成多个单参数的函数。 每个函数都是一个参数,看起来好清晰哦。上面两个函数真的一样吗?我...

  • 函数柯里化与偏函数

    什么是函数柯里化(Currying) 维基百科: 在计算机科学中,柯里化(英語:Currying),又译为卡瑞化或...

  • 柯里化 - 2023-02-11

    维基百科中对柯里化 (Currying) 的定义为: In mathematics and computer sc...

  • 柯里化

    什么是柯里化(Currying) 维基百科的解释[https://zh.wikipedia.org/wiki/%E...

  • 《Swift 开发者必备 Tips》 阅读笔记(一)

    本编是Swifter - Swift 开发者必备 Tips 阅读笔记 一、柯里化(Currying), 百度百科 ...

  • 『JavaScript专题』之函数柯里化

    JavaScript专题之函数柯里化 定义 维基百科中对柯里化 (Currying) 的定义为: In mathe...

  • 函数的柯里化和反柯里化

    一 柯里化(currying) 柯里化(currying)又称部分求值。一个currying的函数首先会接受一些参...

  • 柯里化(科里化)Currying

    科里化:必须使用在一元函数中,且函数具有两个或者两个以上的变量。 Currying如何进行的呢?不妨来看一个直观的...

  • Currying

    介绍 Methods may define multiple parameter lists. When a me...

  • currying

    what's currying curry化就是把add(2,3)变成add(2)(3) 我们仔细看看这里发生了什...

网友评论

    本文标题:40. 科理化Currying

    本文链接:https://www.haomeiwen.com/subject/ydlmbxtx.html