我正在準備一個關於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