亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Clojure使用Java方法

Yuqi / 2389人閱讀

摘要:鏈?zhǔn)酱a通常要求操作有返回值,但對(duì)于很多操作大都是型,什么也不返回,這樣就很難鏈起來(lái)了我們?cè)谥羞@樣來(lái)寫(xiě)語(yǔ)法實(shí)例放入中是推薦的寫(xiě)法,也就是前面加上訪(fǎng)問(wèn)一個(gè)類(lèi)的內(nèi)部類(lèi)用如下形式

Clojure使用Java方法

Clojure有個(gè)很強(qiáng)大的功能,就是你可以使用Lisp語(yǔ)言風(fēng)格無(wú)縫調(diào)用java api(java interop).這無(wú)疑是如虎添翼.

調(diào)用一個(gè)Java對(duì)象的方法

語(yǔ)法:

.method-name object-value args ...
user=> (.toUpperCase "hello,clojure")

"HELLO,CLOJURE"

user=> (.indexOf "hello,clojure" "j")

9

user=> (. "hello,clojure" indexOf "j")

9





com.lightsword=> (.. System (getProperties)(get "os.name"))

"Mac OS X"



com.lightsword=> (.substring "hello,clojure" 6)

"clojure"






其實(shí)都使用的是dot operator,形如:

(. object-expr-or-classname-symbol method-or-member-symbol optional-args*)  
設(shè)置一個(gè)Java對(duì)象的公有成員變量

語(yǔ)法如下:

(set! (.member-variable object-variable) new-value)

比如

user=> (import java.awt.Point)

java.awt.Point

user=> (let [pt (Point. 0 10)]

  #_=> (set! (.y pt) 100)

  #_=> (.y pt));

100 


調(diào)用靜態(tài)公有成員變量/函數(shù)

用/分開(kāi)類(lèi)和成員

user=> (java.lang.Math/abs -3)

3

user=> (java.lang.Math/pow 2 10)

1024.0
創(chuàng)建一個(gè)對(duì)象

兩種方法

(Class-name. arg1 arg2 ...) 

注意,類(lèi)名后面有個(gè).(a dot)這個(gè)最常用;

還有就是

(new Class-name arg1 arg2 ...)

new的后面類(lèi)名,構(gòu)造函數(shù)里面的參數(shù)不需要使用括號(hào)()

user=> (String. "Clojure!")

"Clojure!"

user=> (new String("Clojure"))



ClassCastException java.lang.String cannot be cast to clojure.lang.IFn  user/eval1266 (form-init7793881567968869401.clj:1)

user=> (new String "Clojure")

"Clojure"
連續(xù)調(diào)用一個(gè)對(duì)象的方法

將多個(gè)操作(多行代碼)通過(guò)點(diǎn)號(hào)"."鏈接在一起成為一句代碼,我們稱(chēng)之為"鏈?zhǔn)骄幊田L(fēng)格"。 鏈?zhǔn)酱a通常要求操作有返回值, 但對(duì)于很多操作大都是void型,什么也不返回,這樣就很難鏈起來(lái)了.

我們?cè)贑lojure中這樣來(lái)寫(xiě)

user=> (doto (java.util.Stack.)

  #_=> (.push "Hello!")

  #_=> (.push "Clojure.")

  #_=> )

["Hello!" "Clojure."]



com.lightsword=> (doto (java.util.HashMap.)(.put "k" 1)(.put "v" 2))

{"v" 2, "k" 1}


import java package

語(yǔ)法

(import [package.name1 ClassName1 ClassName2]  

        [package.name2 ClassName3 ClassName4]) 

實(shí)例

user=> (import [java.util Date Stack]

  #_=> [java.net Proxy URI])

java.net.URI

user=> (Date.)

#inst "2016-06-28T15:19:05.923-00:00"

放入namespace中是推薦的寫(xiě)法,也就是前面加上ns:

user=> (ns com.lightsword

  #_=> (:import [java.util Date Stack]

  #_=>  [java.net Proxy URI])

  #_=> )

nil

com.lightsword=> (Date.)

#inst "2016-06-28T15:21:43.048-00:00"


訪(fǎng)問(wèn)一個(gè)類(lèi)的內(nèi)部類(lèi)

用如下形式:

package.class-name$inner-class

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64878.html

相關(guān)文章

  • JVM 平臺(tái)上的各種語(yǔ)言的開(kāi)發(fā)指南[z]

    摘要:我們的目標(biāo)是建立對(duì)每一種語(yǔ)言的認(rèn)識(shí),它們是如何進(jìn)化的,未來(lái)將走向何方。有點(diǎn)的味道是堅(jiān)持使用動(dòng)態(tài)類(lèi)型,但唯一還收到合理?yè)肀玫木幊陶Z(yǔ)言,然而一些在企業(yè)的大型團(tuán)隊(duì)中工作的開(kāi)發(fā)者擇認(rèn)為這會(huì)是的一個(gè)缺陷。 為什么我們需要如此多的JVM語(yǔ)言? 在2013年你可以有50中JVM語(yǔ)言的選擇來(lái)用于你的下一個(gè)項(xiàng)目。盡管你可以說(shuō)出一大打的名字,你會(huì)準(zhǔn)備為你的下一個(gè)項(xiàng)目選擇一種新的JVM語(yǔ)言么? 如今借助來(lái)自...

    phodal 評(píng)論0 收藏0
  • Intellij + Cursive: 最佳 Clojure/Java 開(kāi)發(fā)環(huán)境組合

    摘要:直到上個(gè)月重新發(fā)現(xiàn)的組合自然是大名鼎鼎的,多年來(lái)一直享有真正程序員最佳的美譽(yù),但直到這個(gè)的出現(xiàn)和接近成熟,它的威力才能被我們享有。完全與一致水平并集成的調(diào)試能力。使用了一個(gè)多月,對(duì)這套感覺(jué)仍然好極了,的最佳開(kāi)發(fā)環(huán)境,沒(méi)有之一。 幾乎從 Clojure 誕生時(shí)候起,它的標(biāo)準(zhǔn)開(kāi)發(fā)環(huán)境就是 Emacs,對(duì) Lisp 的親近感、slime 對(duì) Lisp 系列語(yǔ)言的支持、paredit 等 Li...

    Rocture 評(píng)論0 收藏0
  • 從一小段代碼看 ClojureJava 解決問(wèn)題的差異

    摘要:的解法程序猿的世界,代碼說(shuō)明一切,我們直接上代碼吧,算法的入口是一個(gè)名為函數(shù)不知道能完全看懂上面代碼的人有多少。程序猿的語(yǔ)言世界真的好復(fù)雜 首先聲明一點(diǎn),這篇短文不是要挑起語(yǔ)言之間的關(guān)于孰優(yōu)孰劣的論戰(zhàn),只是希望通過(guò)一個(gè)小需求,讓大家能夠?qū)Ρ润w會(huì)一下函數(shù)式編程和面向?qū)ο缶幊痰牟町悾òɡ砟詈驼Z(yǔ)法上的)。 Clojure 是什么? Clojure 是運(yùn)行在 Java 虛擬機(jī)(J...

    aaron 評(píng)論0 收藏0
  • Java 8函數(shù)式編程》作者Richard Warbourton:Java的亮點(diǎn)不是語(yǔ)言本身

    摘要:根據(jù)對(duì)社區(qū)和新特性的深刻理解,他創(chuàng)作了函數(shù)式編程一書(shū)。問(wèn)你在倫敦社區(qū)的經(jīng)歷是否幫助你創(chuàng)作了函數(shù)式編程這本書(shū)絕對(duì)是這樣。我認(rèn)為引入函數(shù)式編程會(huì)為很多編程任務(wù)提供方便。問(wèn)之前的是面向?qū)ο蟮模F(xiàn)在全面支持函數(shù)式編程。 非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/199271 Richard Warburto...

    mzlogin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<