lambda函式式程式設計思想
只要能獲取到結果,誰去做的,怎麼做的都不重要,重視的是結果,不重視過程
在數學中,函式就是有輸入量、輸出量的一套計算方案,也就是「拿什麼東西做什麼事情」。相對而言,物件導向過分強調「必須通過物件的形式來做事情」,而函式式思想則盡量忽略物件導向的複雜語法——強調做什麼,而不是以什麼形式做。
物件導向的程式設計思想
做一件事情,找乙個能解決這個事情的物件,呼叫物件的方法,完成事情.
物件導向是一種程式設計方法.是一種對於**進行組織然後實現業務功能的方法和設計思想.其核心的本質就是.我們基於"萬物皆物件"這種方法,組織我們自己的**.從而讓**能夠有一定的聚合和分類.讓**好理解一些.
何為物件?
物件導向是**組織的一種方法.那麼這個方法具體是什麼呢?就兩個字:抽象即我們需要用**來實現真實社會中的乙個功能,乙個事情或者表現真實社會中的事務.但是**又全都是乙個個符號和語法.如何能真正的組織我們的**.然後實現功能呢.這個時候必須對現實生活中的一些"特徵"進行抽象,然後對映到我們的程式設計設計中.這種特徵的抽象就是抽象出乙個個物件的概念.
比如我們設計乙個程式用來賣蘋果.那麼在程式中.蘋果就可以是乙個物件.他的特徵是有重量和有數量.然後進一步.我們會針對"數量"和"重量"來進行實現售賣的功能.然後大家發現我們自然而然的忽略了"蘋果"這兩個字.這就是之前說的"抽象".而物件導向就是把乙個個實物進行抽象,用我們的**進行組織
所以,請記住"物件"是對現實事務的特徵的一種抽象.
lambda的標準格式
lambda省去物件導向的條條框框,格式由3個部分組成:
一些引數
乙個箭頭
一段**
lambda表示式的標準格式為:
(引數型別 引數名稱) ‐>
格式說明:
lambda省略格式
可推導即可省略
lambda強調的是「做什麼」而不是「怎麼做」,所以凡是可以根據上下文推導得知的資訊,都可以省略
省略規則
在lambda標準格式的基礎上,使用省略寫法的規則為:
小括號內引數的型別可以省略;
如果小括號內有且僅有乙個參,則小括號可以省略;
如果大括號內有且僅有乙個語句,則無論是否有返回值,都可以省略大括號、return關鍵字及語句分號。
lambda的使用前提
lambda的語法非常簡潔,完全沒有物件導向複雜的束縛。
但是使用時有幾個問題需要特別注意:
使用lambda必須具有介面,且要求介面中有且僅有乙個抽象方法。 無論是jdk內建的 runnable 、comparator 介面還是自定義的介面,只有當介面中的抽象方法存在且唯一 時,才可以使用lambda。
使用lambda必須具有上下文推斷。 也就是方法的引數或區域性變數型別必須為lambda對應的介面型別,才能使用lambda作為該介面的例項。
備註:有且僅有乙個抽象方法的介面,稱為「函式式介面」。
map, reduce和filter(函式式程式設計)
map可以用於對可遍歷結構的每個元素執行同樣的操作,批量操作 map lambda x x 2,1,2,3,4 1,4,9,16 map lambda x,y x y,1,2,3 5,6,7 6,8,10 在python3種輸出上述結果 result1 list map lambda x x 2,1...
python函式式程式設計模式 什麼是函式式程式設計思維?
函式式程式設計與命令式程式設計最大的不同其實在於 函式式程式設計關心資料的對映,命令式程式設計關心解決問題的步驟 這裡的對映就是數學上 函式 的概念 一種東西和另一種東西之間的對應關係。這也是為什麼 函式式程式設計 叫做 函式 式程式設計。這是什麼意思呢?假如,現在你來到 google 面試,面試官...
day11 函式高階
根據變數作用域 能使用的範圍 的不同將變數分為 全域性變數和區域性變數 1.全域性變數 沒有定義在函式裡面或者類裡面的變數都是全域性變數 全域性變數的作用域是從定義開始到程式結束 全域性變數可以在函式裡直接用 2.區域性變數 定義在函式裡面的變數就是區域性變數。區域性變數的作用域是從定義開始到函式結...