Currying

作者: 猴猴猪027 | 来源:发表于2018-08-30 14:26 被阅读0次

介绍

Methods may define multiple parameter lists. When a method is called with a fewer number of parameter lists, then this will yield a function taking the missing parameter lists as its arguments.
定义的一个函数有多个参数,如果只传入了其中部分参数,那么它就变成了另一个函数,参数列表是,之前缺少的参数。

举例

object CurryTest extends App {

  def filter(xs: List[Int], p: Int => Boolean): List[Int] =
    if (xs.isEmpty) xs
    else if (p(xs.head)) xs.head :: filter(xs.tail, p)
    else filter(xs.tail, p)

  def modN(n: Int)(x: Int) = ((x % n) == 0)

  val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
  println(filter(nums, modN(2)))
  println(filter(nums, modN(3)))
}

如上所示,modN需要两个参数,返回值是一个boolean型的;如最后两行所示,如果只传了一个参数,那么这个函数就变成了需要一个参数,返回boolean值。
刚好符合filter的第二个参数的定义,入参是Int,结果是Boolean。

相关文章

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

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

  • Currying

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

  • currying

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

  • Swift_currying(柯里化)

    一. Currying解释 currying 翻译为局部套用.又称为部分求值(Partial Evaluation...

  • Swift 进阶

    swift新元素 柯里化(Currying) Swift 里可以将方法进行柯里化(Currying),这是也就是把...

  • Swift Currying

    本博客主要是对下面博客的翻译:https://robots.thoughtbot.com/introduction...

  • Function Currying

    函数柯理化,很多人觉得很难理解。其实难就难在它的翻译并不恰当。如果翻译成 部分绑定函数 含义是不是一目了然?学过C...

  • Currying Operator

    柯里化 操作符 可以直接重载+ - 乘操作符,在swift中有了这些操作符的定义,如果想自定义操作符,比如点乘+*...

  • Swift-27个关键字,助力开发(篇幅有点长)

    1、柯里化(Currying) Swift 里可以将方法进行柯里化 (Currying),也就是把接受多个参数的方...

  • 函数柯里化(currying)

    对于函数的柯里化(currying)应该不陌生,简单来说 Currying 技术是一种通过把多个参数填充到函数体中...

网友评论

    本文标题:Currying

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