day11 Lamdba函式式程式設計思想

2021-09-28 17:37:17 字數 1614 閱讀 3528

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.區域性變數 定義在函式裡面的變數就是區域性變數。區域性變數的作用域是從定義開始到函式結...