Auto-implemented properties are by default readonly (only getter)
package MyLib class MyClass myProperty float constructor() this.myProperty = 10.0 end end
With value:
package MyLib class MyClass myProperty1 float = 10 myProperty2 bool = true end
With setter:
package MyLib class MyClass myProperty1 float set = 10 myProperty2 float set end
With access limited setter:
package MyLib class MyClass myProperty1 float protected set myProperty2 float protected set = 12.3 end
A property with a manually provided backing property:
package MyLib class MyClass private _myBackingProperty float set myProperty float get return this._myBackingProperty end set this._myBackingProperty = value end end end
Shortened:
package MyLib class MyClass private _myBackingProperty float set myProperty float get : return this._myBackingProperty set : this._myBackingProperty = value end end
With a value check
package MyLib using System class MyClass private _myBackingProperty float set myProperty float get : return this._myBackingProperty set if value > 100 : throw InvalidArgumentError() this._myBackingProperty = value end end end
Readonly property:
package MyLib class MyClass myProperty float get return 123 end end end
Shorter:
package MyLib class MyClass myProperty float get : return 123 end end
Lesser access level for setter
package MyLib class MyClass private _myBackingProperty float set protected myProperty float get : return this._myBackingProperty private set : this._myBackingProperty = value end end
Note that an auto-implemented static property can only be of a primitive type or must be nullable for custom types.
package MyLib class MyClass private static _myBackingProperty float set static myProperty float get : return MyClass._myBackingProperty set : MyClass._myBackingProperty = value end static readonly myReadonlyProperty float get : return 123 end end
package MyLib abstract class MyAbstractClass abstract myProperty float set abstract myReadonlyProperty float end class MyClass private _value float set override myProperty float get : return this._value set : this._value = value end override myReadonlyProperty float get : return 123 end end