首页 > 解决方案 > 无限可咖喱添加功能

问题描述

我想知道如何实现一个无限柯里化添加函数,为了解释我会坚持使用 scala。

我知道如何准备一个简单的咖喱像

def add(a: Int): Int => Int = {
  def iadd(b: Int): Int = {
    a + b
  }
  iadd
}
add(4)(5) // 9

我将如何实施add(5)(4)(x1)(x2)..(xn)

标签: scalacurrying

解决方案


如果您想将每个整数重新解释n为 function n.+,那么就这样做:

implicit class Add(val x: Int) extends AnyVal { def apply(i: Int) = x + i }
val add = 0

甚至更短(使用隐式转换):

implicit def asAdd(n: Int): Int => Int = n.+
val add = 0

例子:

add(1)(2)(3)(4) // res1: Int = 10

没有“无限可咖喱”这样的东西,这不是一个有意义的概念。


推荐阅读