Value Provider
Whenever value provider belongs to an object, it effectively becomes a property holder for this object.
Properties Framework
There are 4 types of standard properties:
- Pro - read only
- Pro.Mutable - read/write, aliased as Pro.M
- Pro.Observable - read/listenTo, aliased as Pro.O
- Pro.ObservableMutable - read/write/listenTo, aliased as Pro.OM
The inheritance graph looks like:
Pro.O
/ \
Pro Pro.OM
\ /
Pro.M
Here is an example of 'name' property definition hierarchy:
trait Foo: // 'name' is read only
def namePro : Pro[String]
def name : String = namePro() // required shortcut
trait Foo_M extends Foo: // 'name' is read/write
def namePro : Pro.M[String]
def name_=(v:String) : Unit = namePro() = v // required shortcut
trait Foo_O extends Foo: // 'name' is read/listenTo
def namePro : Pro.O[String]
trait Foo_OM extends Foo_O with Foo_M: // 'name' is read/write/listenTo
def namePro : Pro.OM[String]
Note. The 'required shortcuts' must be implemented. They will not even show up in documentation, because they are assumed to be there
- Source
- __.scala
class java.lang.Object
trait scala.Matchable
class Any
trait Pro.Mutable[Pro.Mutable.A]
trait Pro.ObservableMutable[Pro.ObservableMutable.A]
class Pro.ObservableMutable.X.Abstract[Pro.ObservableMutable.X.Abstract.A]
class Pro.ObservableMutable.X.Basic[Pro.ObservableMutable.X.Basic.A]
trait Pro.ObservableMutable.X.Base[Pro.ObservableMutable.X.Base.A]
class Pro.Mutable.X.Abstract[Pro.Mutable.X.Abstract.A]
class Pro.Mutable.X.Basic[Pro.Mutable.X.Basic.A]
trait Pro.Observable[Pro.Observable.A]
trait Pro.Observable.X.Base[Pro.Observable.X.Base.A]
class Boolean.G.Pro.ObservableMutable.X.Basic[Boolean.G.Pro.ObservableMutable.X.Basic.A]
class Byte.G.Pro.ObservableMutable.X.Basic[Byte.G.Pro.ObservableMutable.X.Basic.A]
class Char.G.Pro.ObservableMutable.X.Basic[Char.G.Pro.ObservableMutable.X.Basic.A]
class Double.G.Pro.ObservableMutable.X.Basic[Double.G.Pro.ObservableMutable.X.Basic.A]
class Float.G.Pro.ObservableMutable.X.Basic[Float.G.Pro.ObservableMutable.X.Basic.A]
class Int.G.Pro.ObservableMutable.X.Basic[Int.G.Pro.ObservableMutable.X.Basic.A]
class Long.G.Pro.ObservableMutable.X.Basic[Long.G.Pro.ObservableMutable.X.Basic.A]
class Short.G.Pro.ObservableMutable.X.Basic[Short.G.Pro.ObservableMutable.X.Basic.A]
class Pro.Observable.X.Abstract[Pro.Observable.X.Abstract.A]
class Boolean.G.Pro.Observable.X.Abstract[Boolean.G.Pro.Observable.X.Abstract.A]
class Boolean.G.Pro.ObservableMutable.X.Abstract[Boolean.G.Pro.ObservableMutable.X.Abstract.A]
class Byte.G.Pro.Observable.X.Abstract[Byte.G.Pro.Observable.X.Abstract.A]
class Byte.G.Pro.ObservableMutable.X.Abstract[Byte.G.Pro.ObservableMutable.X.Abstract.A]
class Char.G.Pro.Observable.X.Abstract[Char.G.Pro.Observable.X.Abstract.A]
class Char.G.Pro.ObservableMutable.X.Abstract[Char.G.Pro.ObservableMutable.X.Abstract.A]
class Double.G.Pro.Observable.X.Abstract[Double.G.Pro.Observable.X.Abstract.A]
class Double.G.Pro.ObservableMutable.X.Abstract[Double.G.Pro.ObservableMutable.X.Abstract.A]
class Float.G.Pro.Observable.X.Abstract[Float.G.Pro.Observable.X.Abstract.A]
class Float.G.Pro.ObservableMutable.X.Abstract[Float.G.Pro.ObservableMutable.X.Abstract.A]
class Int.G.Pro.Observable.X.Abstract[Int.G.Pro.Observable.X.Abstract.A]
class Int.G.Pro.ObservableMutable.X.Abstract[Int.G.Pro.ObservableMutable.X.Abstract.A]
class Long.G.Pro.Observable.X.Abstract[Long.G.Pro.Observable.X.Abstract.A]
class Long.G.Pro.ObservableMutable.X.Abstract[Long.G.Pro.ObservableMutable.X.Abstract.A]
class Short.G.Pro.Observable.X.Abstract[Short.G.Pro.Observable.X.Abstract.A]
class Short.G.Pro.ObservableMutable.X.Abstract[Short.G.Pro.ObservableMutable.X.Abstract.A]
class Pro.Observable.X.Basic[Pro.Observable.X.Basic.A]
trait Pro.Observable.X.ActivationBase[Pro.Observable.X.ActivationBase.A]
trait Pro.X.Base[Pro.X.Base.A]
class Pro.X.Abstract[Pro.X.Abstract.A]