··
一、with與apply函數(shù)
1.1、with函數(shù)
with函數(shù)用于對(duì)同一個(gè)對(duì)象執(zhí)行多次操作而不需要反復(fù)把對(duì)象的名稱寫(xiě)出來(lái)
例如,為了構(gòu)建一個(gè)包含指定內(nèi)容的字符串,需要先后如下調(diào)用

改為通過(guò) with 函數(shù)來(lái)構(gòu)建的話會(huì)代碼會(huì)簡(jiǎn)潔許多

with 結(jié)構(gòu)其實(shí)是一個(gè)接受兩個(gè)參數(shù)的函數(shù),在這個(gè)例子中就是一個(gè) StringBuilder 和一個(gè) Lambda 表達(dá)式,這里利用了把 Lambda 表達(dá)式放在括號(hào)外的約定
with 函數(shù)的返回值是執(zhí)行 Lambda 表達(dá)式的結(jié)果,該結(jié)果就是 Lambda 中的最后一個(gè)表達(dá)式的返回值,因此如果將代碼修改為如下所示的話,因?yàn)?println() 方法無(wú)返回值,所以打印出來(lái)的內(nèi)容將是 kotlin.Unit

1.2、apply函數(shù)
apply函數(shù)和with函數(shù)的唯一區(qū)別在于:apply函數(shù)始終會(huì)返回作為實(shí)參傳遞給它的對(duì)象

apply函數(shù)被聲明為一個(gè)擴(kuò)展函數(shù),它的接收者變成了作為實(shí)參的 Lambda 的接受者
二、const val和val
1.const val 可見(jiàn)性為public final static,可以直接訪問(wèn)。
2.val 可見(jiàn)性為private final static,通過(guò)方法調(diào)用訪問(wèn)。