ScopeProperty
范围属性是可以在当前线程本地存储值的东西。它的 API 可用于设置/获取该值,还可以以堆栈方式对部分值进行修改。
换句话说,它是全局变量、scala 隐式变量、线程本地变量(ThreadLocal) 的替代品。
与全局变量相比,它允许运行多个线程独立运行相同的代码
与 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
}
}