![](/img/trans.png)
[英]Using Delegates.observable with StateFlow in Kotlin(Android)
[英]Delegates.observable for anonymous functions in kotlin?
我做的事情很奇怪,但我有短暫的感覺,應該有可能。
Kotlin是否可以進行以下操作? (它可以編譯但不起作用)
var delegatedProp: (Int) -> Unit by Delegates.observable({ a-> Unit }) { _, _, newVal ->
//This is never raised
//Secondly how should I access the given Int ?
//newVal.a doesn't seem to compile
}
我的主意是,一旦我調用了proxyedProp(10),可觀察對象就會被調用,並且我將能夠訪問newVal.a。
這樣可以成功編譯,但不會調用observable
當您設置delegatedProp
,將調用第二個lambda,即
x.delegatedProp = { print(it) }
( { print(it) }
只是(Int) -> Unit
類型的示例。 newVal
將是您將屬性設置為的函數,在這種情況下為{ print(it) }
。 因此它沒有.a
。
如果要在調用delegatedProp(10)
時做一些事情,只需...將這些操作放入函數中:
val delegatedProp: (Int) -> Unit = { a -> /* do whatever you wanted to do with newVal.a */ }
如果您希望delegatedProp
是一個var
,但是要繼續執行您的“額外”操作,無論它被分配給什么,最簡單的方法可能是自定義getter:
var delegatedProp: (Int) -> Unit = { a -> Unit }
get() = { a ->
/* whatever you want to do with a */
field(a)
}
或setter:它不會在每次訪問時都創建一個新的lambda,但是要么重復一些代碼,要么至少需要顯式設置一次,並且不僅要初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.