Mutable

class Mutable<T>(source)

包装一个不可变数据,基于 ReentrantMutex 提供并发安全的更新方式。同时支持在数据被修改时执行 lambda。

请不要使用此类包装本身可变的数据,mutable 及其重载会拒绝 Mutable / MutableCollection / MutableMap,但对于在这之外的类型,例如一个包含 var 的数据类、一个 MutableMutableCollection 的包装类,mutable 的检查无能为力。

请使用 mutable 来构造此类,如果确实需要包装 MutableMutableCollectionMutableMap,请使用 forceMutable,请阅读 forceMutable 的描述来了解这么做的影响,forceMutable 的描述也适用于包装其他可变类型带来的影响。

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
fun get(): T

获取当前值,无锁。

Link copied to clipboard

尽可能地在编译器拦截对 Mutablemutable 调用,前提是匹配到此重载。

Link copied to clipboard
suspend fun set(new: T): T

覆盖当前值,返回修改后的新值。

Link copied to clipboard
suspend fun update(transform: suspend (T) -> T): T

使用 transform 的返回值来更新值,返回更新后的值,transform 内的表达式在锁内执行,并发安全。