ScopeProperty
范围属性是可以在当前线程本地存储值的东西。它的 API 可用于设置/获取该值,还可以以堆栈方式对部分值进行修改。
换句话说,它是全局变量、scala 隐式变量、线程本地变量(ThreadLocal) 的替代品。
To compare with global variable, It allow to run multiple thread running the same code independently
与 scala 隐式变量相比,它与代码库的耦合较小
与线程本地变量(ThreadLocal) 相比,它有一些 API 可以收集所有范围属性并稍后将它们恢复到相同状态
object Xlen extends ScopeProperty[Int]
object ScopePropertyMiaou extends App {
Xlen.set(1)
println(Xlen.get) // 1
Xlen(2) {
println(Xlen.get) // 2
Xlen(3) {
println(Xlen.get) // 3
Xlen.set(4)
println(Xlen.get) // 4
}
println(Xlen.get) // 2
}
}