我正在准备一个关于Scala和函数式编程的演示文稿,我不确定两个概念。Scala中的咖喱和关闭
我用在演示过程中较早推出的功能:
def safe_division(x: Int, y: Int) : Option[Double] = {
if(y != 0)
Some(x/y.toDouble)
else
None
}
我创建了一个咖喱版本(请纠正我,如果我错了!):
val curried_safe_division: (Int) => (Int) => Option[Double] = {
(x) =>
(y) =>
if(y != 0)
Some(x/y.toDouble)
else
None
}
所以第一部分,我我不确定是“curried_safe_division叫咖喱?”
然后我介绍了一些代码来说明如何讨好功能允许程序员高效地重用功能:
val divideSix = curried_safe_division(6)
divideSix(3)
// prints: Some(2.0)
divideSix(6)
// prints: Some(1.0)
我是不是在这里说,divideSix
是一个封闭? curried_safe_division
不是关闭吗? 我使用这样的定义:
https://softwareengineering.stackexchange.com/a/40708 可以存储为变量(称为“第一级功能”),其具有访问本地其它变量的范围进行特殊能力的函数它是在创建
我看了多个资源联机,维基百科网页和这个计算器的问题:What is a 'Closure'?但它仍然是不超级明确
“curried_safe_division叫咖喱?” “咖喱”是什么意思? – pedrofurla
现在关闭,我读了所有的https://en.wikipedia.org/wiki/Closure_(computer_programming)。 – pedrofurla
@pedrofurla我不知道“咖喱”应该是什么意思,但我的理解是,它应该是从你产生其他部分定义的功能的“基本功能” – Daniel