kotlin在standand.kt中定義了一些標準函式,方便程式設計師呼叫。
let函式的引數是乙個lambda表示式,其呼叫格式如下:
obj1.
let
這裡的obj
與obj2
實際上是同乙個物件,寫的不一樣是為了避免重名。
let函式最常見的應用時輔助判空。請看下面的例子
fun
dostudy
(study:study)
此處dostudy
是乙個函式,接收乙個study
型別的引數,其函式體也很簡單,就是完成「閱讀」和「寫作」。但是上述問題有乙個問題,就是引數不允許是空型別。即當主調函式傳入的引數是null
時,編譯器就會報錯。為了解決這個問題,我們採用kotlin的可空型別,改進**如下:
fun
dostudy
(study:study?
)
上述**的確可行,但是顯得比較囉嗦,因為他等價於每次執行study
的某個方法之前,都要進行判空操作。而事實上,我們連續執行了study
的兩個方法,僅僅一次判空即可,可以借助let函式改進如下:
fun
dostudy
(study:study?
)}
此處,應用了lambda表示式的簡化規則:當lambda中只有乙個引數時,可省略之,並用it代替。
with
函式的作用是當連續呼叫同乙個函式的多個方法時,讓**更加簡潔。
with
函式接收兩個引數,第乙個引數是任意的物件,第二個引數是乙個lambda表示式,lambda的最後一行作為with()
函式的返回值。請看下面的例子。
val letters = listof
("a"
,"b"
,"c"
,"d"
,"e"
)val builder =
stringbuilder()
for(letter in letters)
val result = builder.
tostring()
println
(result)
上面的一段**將letters
中的字母逐個新增到builder中,並以換行符作為分隔,最後將builder的轉成字串賦值給result。
利用with
函式改寫為如下的形式
val result =
with
(stringbuilder()
)tostring()
}println
(result)
run
方法與with
方法作用基本一致,只是在呼叫形式上做了微小改動。
run
的引數只有乙個lambda表示式,且不能單獨呼叫,只能作為物件的方法呼叫。此處的物件的作用相當於with
中的第乙個引數,為後面的lambda表示式提供上下文。
上面的**用run
方法改寫如下。
val result =
stringbuilder()
.run
tostring()
}println
(result)
val result =
stringbuilder()
.}.tostring()
println
(result)
kotlin標準函式使用場景
isantialias true isdither true style paint.style.fill and stroke strokewidth 6.0f 而這時要用let,則需要傳入引數it,並且返回出去,就顯得冗餘 let使用場景 在空判斷時 var paint2 paint let在有...
Kotlin建構函式
當kotlin中的類需要建構函式時,可以有乙個主建構函式和多個次建構函式,可以沒有次建構函式。主建構函式在類名後。常規用法 class person name string 當主建構函式有註解或者可見性修飾符,需加 constructor 關鍵字。class personpublic public ...
kotlin高階函式
val list list listof 1,3,4,9 1.使用傳統的方式條件元素 var newlist arraylist list foreach it為list元素 2.使用map來進行元素操作返回乙個新的list val newlist list map it為list裡面的元素 3.m...