Lambda所要表達的觀念

在數學的領域,您可能會這樣表示一個方程式:
f(x) = x + 1

類似的概念,在資訊程式的領域您可能會希望設計一個函數:

sum(x) = x + 1

如果寫成程式語言(例如:JavaScript),可能會寫成像這樣:

function sum(x) {
     return x + 2;
}

所謂匿名函數就是沒有名稱的函數,例如以下的例子就是匿名函數:

function (x) {
     return x + 2;
}

而最後加上的一對括號,稱為立即函數,意思是立即執行此暱名函數的意思,這就是Closure觀念。

(function(x) {
     return x + 2;
})();

這種Closure所要表達的意思就是,在「函數裡面的另一個函數」,以物件導向的角度來看,也可以解釋為立即實例化。

下面這麼例子中,變數 lambda 被指定 (Assign) 為一個匿名函數。從程式語言的角度來看,Closure 用來封裝出一個模組,所以lambda 變數也可以解釋成「一個模組」。

var lambda = (function(x) {
     return x + 2;
})();

程式語言再繼續進化,宣告一個匿名函數的變數時,可以不需要 Closure;因此也可以採用以下的寫法,於是上面的例子就變成下面的例子:

var lambda = function(x) {
     return x + 2;
};

上述的寫法,正規的解釋方式是「宣告暱名函數的變數」,Lambda 希望可以用匿名函數(Anonymous Function)就能表達運算的方法。
因此說到這邊為止,lambda就只是一個變數,而這個變數代表了一個運算的方法。

有一個重要的觀念要釐清,lambda是一個變數,不能解釋為函數。如果要解釋成函數那程式應該寫成如下:

function lambda(x) {
     return x + 2;
};
廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s