新聞中心
Java 程序員在使用Ruby 編程時(shí)會(huì)有一種解放的感覺,一種從 Java 那繁瑣的語法環(huán)境進(jìn)入一個(gè)無拘無束、自由國(guó)度的感覺。隨著 Clojure 和 Scala 等新語言的出現(xiàn),這種對(duì)比的感覺會(huì)越來越強(qiáng)烈。Ruby 在很短的時(shí)間里異軍突起,很大的原因在于它的簡(jiǎn)潔和自由,比如下面一句代碼:

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、重慶網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:垃圾桶等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致好評(píng)!
- File.new("testfile") .each {|line| puts line[-1] }
如果用 Java 來寫,不知道要寫多少行。Bruce Tate 在《七周七種語言》這本書中譴責(zé) Java 說:“我的手指在流血,因?yàn)槲也坏貌淮虺鲞@樣多的代碼;我的眼睛在流血,因?yàn)槲疫€要去讀它們?!焙呛?,說的很形象。
其實(shí),Java 并不是誠(chéng)心在為難程序員,它一直在改進(jìn)。而 Eclipse 基金會(huì)推出的一種叫做Xtend 語言正是為了要簡(jiǎn)化Java 的語法,減輕 Java 程序員的負(fù)擔(dān)。
[[51111]]
又一種新語言?不要擔(dān)心。Xtend 更像是一種模板語言。它緊密的和 Eclipse IDE 捆綁在一起,要使用它,你需要安裝 Eclipse 的 Xtend 插件,Xtend 代碼并不是直接編譯成 JVM 字節(jié)碼的,當(dāng)你在 IDE 編輯、保存 Xtend 代碼時(shí),它會(huì)自動(dòng)的編譯成相對(duì)應(yīng)的 Java 代碼。
在上圖的右邊窗口里,你可以檢查生成的 Java 代碼是不是符合你的預(yù)期,并可以通過它調(diào)試你的程序。
那 Xtend 究竟能幫助Java 程序員做什么呢?面面俱到的介紹一種新語言是一種很復(fù)雜的事,我也不想考驗(yàn)各位的耐心。這里只舉例說明幾個(gè)大家一眼就能看出這種語言存在的價(jià)值的例子。
1. 類型推測(cè)
在 Java 里很多的表達(dá)式中,根據(jù)語句的右邊的代碼完全可以推導(dǎo)出左邊的類型,比如下面的 Java 語句:
- //Java
- List names = getTheListOfNames ()
而在 Xtend 語言里,你就不必再聲明左邊的類型,直接寫成:
- val names = getTheListOfNames ()
在 for 循環(huán)里可以寫成這樣:
- for (name : getTheListOfNames ())
2. 對(duì)象屬性訪問方式的簡(jiǎn)化
在 Java 里,對(duì)象屬性的訪問一般都是借用 set 和 get 方法實(shí)現(xiàn)的,在 Xtend 里,你可以直接這樣寫:
- person.name
而不需要寫成:
- person.getName ()
賦值方法也是:
- person.name = "Foo"
等同于
- person.setName ("Foo")
還有一個(gè)特征很像 Ruby 里的用法,對(duì)于一個(gè)方法的調(diào)用,你可以寫成這樣:
- obj.compute
而不需要寫成:
- obj.compute ()
3. Switch 語句
這條我不說,估計(jì)大家也都會(huì)明白。Java 里的 switch 語句只能接受數(shù)字或 char 類型的判斷參數(shù),而在 Xtend 里,沒有這種限制:
- val Shape shape = ...
- switch (shape) {
- Rectangle case shape.width == shape.height :
- "Square ("+shape.width+")"
- Rectangle :
- "Rectangle ("+shape.width+" x "+shape.height+")"
- Circle :
- "Circle ("+shape.diameter+")"
- default :
- "Don't know"
- }
4. 模板表達(dá)式
在 Xtend 里,定義一個(gè)字符串,你可以寫成這樣:
- val msg = 'This is some multi line
- text with "double quotes" in it'
請(qǐng)注意,這個(gè)字符串可以是多行的。
而在使用這個(gè)變量時(shí), 你可以寫成:
- def print_line (String msg)'''
<
> - '''
變量直接嵌入文本里!很像 PHP 或 Ruby 里的寫法。
5. 閉包
我最后介紹的當(dāng)然也是最強(qiáng)大的一個(gè)功能了,閉包。據(jù)說 Java 會(huì)在 xxxx (xxxx <=3000)年之前加入閉包功能,不過你不用等了。我們來看看 Xtend 里如何實(shí)現(xiàn)閉包:
- val predicate = [ Person person | "Hans" == person.name ]
- persons.filter (predicate)
這個(gè)閉包是用來實(shí)現(xiàn)過濾 persons 集合里 person.name=”Hans”的功能的。怎么樣,有點(diǎn)函數(shù)式編程語言的感覺吧。
Xtend 里還有很多的語言特征,這里就不一一敘述了,有興趣的朋友可以閱讀官方網(wǎng)站提供的HTML 在線文檔,或下載 PDF 版的文檔。
通過上面的介紹,你的 Xtend 的感覺如何?
附:下面是 Xtend 官網(wǎng)上提供的一個(gè)介紹視頻:
原文:http://www.aqee.net/eclipse-xtend/
網(wǎng)頁(yè)題目:EclipseXtend對(duì)Java說:我?guī)湍闶萆?
文章源于:http://www.dlmjj.cn/article/cdehpcj.html


咨詢
建站咨詢
