scala - 无限可咖喱添加功能
问题描述
我想知道如何实现一个无限柯里化添加函数,为了解释我会坚持使用 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)
解决方案
如果您想将每个整数重新解释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
没有“无限可咖喱”这样的东西,这不是一个有意义的概念。
推荐阅读
- excel - 如果不包括最后一行的列总和 = 另一个单元格中的值
- r - 重用模块中定义的反应元素
- javascript - 解构没有索引的嵌套数组?
- java - 为什么在 paintComponent(Graphics g) 方法中使用 if 语句会使方法中的所有代码无效?
- c++ - 什么返回 boost::geometry::intersection?
- javascript - 从具有相同键的对象创建一个新数组
- android - android studio错误:制作项目后无法访问zzbgl,但如果您重建则没有错误
- mysql - 即使启用了“跳过名称解析”,MySQL“未经身份验证的用户”
- java - Flink 从 GenericRecord Stream 生成动态流
- python - 在 python 中的错误答案后,我如何前往循环的开头?