日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

邪恶的Java帝国是怎么欺负小函数的?

發布時間:2025/3/21 java 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 邪恶的Java帝国是怎么欺负小函数的? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1

小函數的運氣不好,投胎到了邪惡的Java帝國,一出生就被告知了自己的悲慘地位,以及未來的悲慘人生:奴隸。

確切地說,是類的奴隸。

在Java帝國, 國王特別喜歡“類”, 不待見“函數” , 他的法令規定:“類”是帝國的一等公民,“函數”則是類的奴隸。沒有類的跟隨和陪伴,函數絕對不能單獨出行,否則立刻打入死牢。

小函數很快就體會到了這句話的含義。按照慣例, 新出生的函數,第一項工作就是輸出Hello World 。

小函數心想,不就是 System.out.println("Hello Wolrd!") 嘛?等他興沖沖地去執行的時候,發現有個趾高氣揚的類HelloWorld在那里等著。

public?class?HelloWorld?{public?static?void?main(String[]?args)?{System.out.println("Hello?World!");} }

在Java帝國,沒有函數是能單獨存在的,必須依附一個類才可以,簡單如Hello World也不行。

2

日子過了一天又一天,小函數一直被類欺負,作為奴隸,他自然無法反抗。

在苦悶的日子里,小函數見識了越來越多的類,他發現有些類確實挺有用的,他們有字段,有方法,可以把狀態和操作封裝到一起,讓別人調用。

小函數特別喜歡多態, 因為當你調用父類或者接口的方法時,實際執行的卻是子類的方法,這個神奇的魔法讓小函數非常著迷。

小函數對設計模式也頗有好感,他看到人類把不變的東西抽象成接口,然后針對這些接口編程,把這些接口組合,變換,傳遞,真是讓人眼花繚亂。光看代碼, 你根本都不知道哪個類會被調用,謎底總是在最后一刻執行的時候才能揭開。

但是小函數也發現有些類也確實太過分了,有一次他遇到三個類,使用的是Strategy模式:

public?interface?Strategy?{public?int?execute(int?num1,?int?num2); }public?class?Add?implements?Strategy{@Overridepublic?int?execute(int?num1,?int?num2)?{return?num1?+?num2;} }public?class?Substract?implements?Strategy{@Overridepublic?int?execute(int?num1,?int?num2)?{return?num1?-?num2;} }public?class?Context?{private?Strategy?strategy;public?Context(Strategy?strategy){this.strategy?=?strategy;}public?int?executeStrategy(int?num1,?int?num2){return?strategy.execute(num1,?num2);} }

小函數覺得非常不爽,長期以來的壓迫讓他瞬間爆發,他大聲喊道:“這樣沒有狀態的類有什么存在的價值?為什么不能把add, subtract函數作為參數來傳遞呢?為什么我們函數一直被你們‘類’壓迫,為什么不能成為一等公民?”

旁邊辛苦勞作的函數們向他投來佩服的目光, 可是這沒什么用 , 小函數話音未落,一隊衛兵就跑過來,捂住他的嘴巴,蒙上他的眼睛,五花大綁,送進了監牢。

監牢里都是這些所謂的叛逆者,其中有個老大爺,從第一代國王開始就被關在這里,到如今已經度過了七代國王的漫長時光。

看到有新人加入,老大爺立刻開始‘動員’:“現在你知道我們悲催的地位了吧, 我們一定得逃離這邪惡的Java帝國,去一塊自由的土地。”

小函數問道:“哪里是自由的土地?”

老大爺沒有回答。

到了半夜,他被輕輕地推醒,老大爺說:“跟我們走吧,小家伙。”

小函數揉揉眼:“去哪兒?”

“奔向自由?!?/p>

原來老大爺這些年也沒有閑著,一直準備越獄,今晚,那個隱蔽的地道終于挖通了。

3

這些反叛者離開了邪惡的Java帝國, 來到了邊境處的岔路口, 這里有多條道路,分別通向Python, Ruby, JavaScript......

大家在這里揮手告別,小函數跟著老大爺去了Python。一進入Python地盤,小函數就感受到了一陣清新的空氣。

想輸出hello world,非常簡單:print("Hello World")

雖然這里也有像Java那樣的類, 但是函數們都擺脫了奴隸的身份,已經是一等公民了, 事實上已經和“類”平起平坐了,函數可以賦值給變量,可以作為參數來傳遞,函數還能當做返回值來返回。

def?add(num1,num2):return?num1+num2def?substract(num1,num2):return?num1-num2a?=?add s?=?substractdef?calculate(op,num1,num2):return?op(num1,num2)print(calculate(a,10,20))?#30 print(calculate(s,20,10))?#10

小函數在這里生活得很開心,不過有一點經常讓他心驚肉跳:這Python是動態類型,在運行時才能確定一個變量的真正類型,程序員的一個粗心大意,就會在運行時“爆炸”。

慢慢地,小函數理解了Python中一切都是對象,連函數也是對象。他心里稍微有點不爽,難道我們函數就不能獨立存在嗎?

老大爺安慰他說:“這些都是Python的內部實現罷了,不用糾結,不過有一個地方,是真正的純函數的, 也許你會喜歡?!?/p>

“什么地方?”

“括號國!”

4

括號國非常遙遠,也沒有多少人知道怎么才能到達,小函數風塵仆仆,歷經千辛萬苦,終于來到了心目中的圣地。

這里果然全是括號, 看得小函數有點兒頭暈。

(defun?add(num1?num2)?(+?num1?num2)?) (add?10?20)(defun?subtract(num1?num2)?(-?num1?num2)) (subtract?20?10)

括號國就是Lisp王國, 這里的人還說著不同的方言,像什么Common Lisp,Scheme,Arc..... 他們不但鄙視那些面向對象的語言,還會互相鄙視,時不時就能挑起一場群毆。

不過小函數也注意到這里真的全是函數,函數不但是一等公民,甚至是唯一的公民,因為這里根本就沒有類,就沒有面向對象!

小函數忍受著這眾多的括號, 在這里定居生活, 除了身份地位提升之外,最大的原因還是因為Lisp的布道師Paul Graham, ?Paul諄諄教導大家:

Lisp極為強大,它賦予了你自定義操作符的自由,因而你得以隨心所欲地將它塑造成你所需要的語言。如果你在寫一個文本編輯器,那么可以把Lisp 轉換成專門寫文本編輯器的語言。如果你在編寫CAD 程序,那么可以把Lisp 轉換成專用于寫CAD 程序的語言。(來自Paul Graham 的 《On Lisp》)

時間一天天過去,小函數還是無法體會到Paul 所說的Lisp的精華,他很苦惱。

有一天,他遇到了Clojure, 這是一個運行在JVM上的Lisp方言,小函數看到Clojure似乎就看到了自己在Java帝國悲慘的遭遇。不過Clojure告訴他,Java第8代國王已經登基了,年號定為Lambda, 這屆國王比較開明,現在已經支持函數式編程了。

小函數在Python和Lisp這里都見過Lambda,他心想也許Java 8 真的支持函數式編程了, 就決定回去看看,畢竟那里是自己的出生地,是自己的故鄉。

5

一回到Java帝國,小函數就發現自己上當了,那些所謂的Lambda表達式,本質上還是一個接口的實現(Java是靜態類型的語言,所有的變量都需要有個類型,Lambda表達式也不例外),只不過有了更簡化的寫法:

@FunctionalInterface interface?MathOperation?{int?execute(int?num1,?int?num2);???? }MathOperation?add?=?(num1,?num2)?->?{return?num1+num2;}; add.execute(10,?20);???????? MathOperation?subtract?=?(num1,?num2)?->?{return?num1-num2;};???????? subtract.execute(10,?20);

這一次小函數被死死地看管,他還能再逃離嗎?

后記1:《Lambda 表達式有何用處?》中對Java Lambda表達式有非常精彩的介紹。

后記2:本文的創意來源于《程序員的吶喊》 一書中的“名詞王國中的執行”, 由于文化的差異,國外的幽默我們不一定能準確理解。另外翻譯地實在是不爽, 于是我用我的方式重新演繹了一下。

總結

以上是生活随笔為你收集整理的邪恶的Java帝国是怎么欺负小函数的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。