ScopeProperty(作用域属性)
作用域属性是一种可以在当前线程本地存储值的物体。它的API可用于设置/获知该值, 但也可用于以堆栈方式修改部分执行的值。
换而言之, 这是一种对全局变量、Scala隐式声明(Implicit)以及线程本地(ThredLocal)的代替品。
相比于全局变量, 它允许多个运行相同代码的不同线程独立运行
相比于Scala Implicit, 它对代码库的干扰更小
相比于ThreadLocal, 它拥有一些API来收集所有ScopeProperty, 并在稍后将它们恢复到相同的状态
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
}
}