国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

用函數式編程技術編寫優美的 JavaScript_ibm

2024-05-06 14:18:03
字體:
來源:轉載
供稿:網友
因為函數式編程采用了完全不同的組織程序的方式,所以那些習慣于采用命令式范例的程序員可能會發現函數式編程有點難學。在這篇文章中,您將了解一些關于如何采用函數式風格,用 JavaScript 編寫良好的、優美的代碼的示例。我將討論: 

函數式編程概念,包括匿名函數、調用函數的不同方法,以及將函數作為參數傳遞給其他函數的方式。

函數式概念的運用,采用的示例包括:擴展數組排序;動態 HTML 生成的優美代碼;系列函數的應用。 
函數式編程概念

 請告訴每個人。請把這個提交給:

  
  Digg  

  Slashdot  

 

在那些通過描述 “如何做” 指定解決問題的方法的語言中,許多開發人員都知道如何進行編碼。例如,要編寫一個計算階乘的函數,我可以編寫一個循環來描述程序,或者使用遞歸來查找所有數字的乘積。在這兩種情況下,計算的過程都在程序中進行了詳細說明。清單 1 顯示了一個計算階乘的可能使用的 C 代碼。


清單 1. 過程風格的階乘

int factorial (int n)
{
  if (n <= 0)
    return 1;
  else
    return n * factorial (n-1);
}



這類語言也叫做過程性 編程語言,因為它們定義了解決問題的過程。函數式編程與這個原理有顯著不同。在函數式編程中,需要描述問題 “是什么”。 函數式編程語言又叫做聲明性 語言。同樣的計算階乘的程序可以寫成所有到 n 的數字的乘積。計算階乘的典型函數式程序看起來如 清單 2 中的示例所示。


清單 2. 函數式風格的階乘

factorial n, where n <= 0     := 1
factorial n    := foldr * 1 take n [1..]



第二個語句指明要得到從 1 開始的前 n 個數字的列表(take n [1..]),然后找出它們的乘積,1 為基元。這個定義與前面的示例不同,沒有循環或遞歸。它就像階乘函數的算術定義。一旦了解了庫函數(take 和 foldr)和標記(list notation [ ])的意義,編寫代碼就很容易,而且可讀性也很好。

 只用三行 Miranda 代碼就可以編寫例程,根據參數,使用廣度優先或深度優先遍歷處理 n 叉樹的每個節點,而且元素可以是任何通用類型。  

從歷史上看,函數式編程語言不太流行有各種原因。但是最近,有些函數式編程語言正在進入計算機行業。其中一個例子就是 .NET 平臺上的 Haskell。其他情況下,現有的一些語言借用了函數式編程語言中的一些概念。一些 C++ 實現中的迭代器和 continuation,以及 JavaScript 中提供的一些函數式構造(functional construct),就是這種借用的示例。但是,通過借用函數式構造,總的語言編程范例并沒有發生變化。JavaScript 并沒因為函數式構造的添加就變成了函數式編程語言。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 绥宁县| 庄河市| 佛山市| 十堰市| 都匀市| 皮山县| 昔阳县| 大城县| 炉霍县| 都匀市| 华安县| 澄迈县| 保定市| 旺苍县| 兴义市| 班玛县| 罗源县| 慈溪市| 文化| 平陆县| 清原| 临沂市| 德阳市| 于都县| 喀喇沁旗| 且末县| 柳林县| 资中县| 双牌县| 横山县| 龙山县| 咸丰县| 广宁县| 平江县| 邯郸市| 日土县| 克东县| 延寿县| 崇州市| 云霄县| 阳东县|