首發(fā)于公眾號: DSGtalk1989
17.可觀察屬性
-
observable
任何用
var
形容的可變屬性都可以對其進行觀察(當(dāng)然用val
修飾的屬性進行觀察也不會報錯产禾,但是將變得毫無意義)一般觀察屬性的格式如下
var name: String by Delegates.observable("<no name>") { property, oldValue, newValue -> println("$property : $oldValue -> $newValue") }
通過
by Delegates.observable
的形式進行觀察与斤,第一參數(shù)傳入的是默認值节视,第二個參數(shù)用lambda
表達式,三個參數(shù)分別對應(yīng)的是property
觀察屬性的類型鳄橘,oldValue
舊的值折柠,和newValue
新的值
-
vetoable
用作攔截,跟上面的
observable
來說唯一的不同是带膜,上面的observable
后面的lambda
表達式返回的是Unit
吩谦,即只是把3個參數(shù)回調(diào)給你讓你知道的。而vetoable
的lambda
需要的是返回一個Boolean
類型膝藕。If the callback returns
true
the value of the property is being set to the new value, and if the callback returnsfalse
the new value is discarded and the property remains its old value.即如果返回
true
那么屬性可以賦值成新的值式廷,如果返回的是false
那么屬性將依然維持舊的值,無法變成新的值芭挽。
Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語法
Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型
Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制
Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類
Kotlin學(xué)習(xí)筆記之 12 對象表達式和對象聲明
Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run滑废、with、let袜爪、also蠕趁、apply
Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入
Kotlin學(xué)習(xí)筆記之 18 函數(shù)
Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達式
Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)
Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明
Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)
Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器
Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時
Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合