Slot
From Erights
(Difference between revisions)
(→Notable implementations: add CoercedSlot) |
Kevin Reid (Talk | contribs) |
||
Line 6: | Line 6: | ||
* [[FinalSlot]] | * [[FinalSlot]] | ||
- | * [[ | + | * [[VarSlot]] |
- | + | ||
- | + | ||
* [[LamportSlot]] | * [[LamportSlot]] | ||
==Protocol== | ==Protocol== | ||
- | + | === get/0 === | |
+ | get() :[[any]] | ||
Returns the current value of this slot. | Returns the current value of this slot. | ||
- | + | === put/1 === | |
+ | put(<var>newValue</var> :[[any]]) :[[void]] | ||
Sets the current value to the (possibly coerced) provided value, if appropriate for this type of slot; [[throw]]s if not allowed. | Sets the current value to the (possibly coerced) provided value, if appropriate for this type of slot; [[throw]]s if not allowed. | ||
- | + | === isFinal/0 === | |
+ | isFinal() :boolean | ||
Says whether the Slot acts like a [[FinalSlot]] -- successive <code>[[#get/0|get]]()</code>s on the same slot will always give the same value. | Says whether the Slot acts like a [[FinalSlot]] -- successive <code>[[#get/0|get]]()</code>s on the same slot will always give the same value. | ||
Line 27: | Line 28: | ||
Note that final implies read-only, but read-only does not imply final. | Note that final implies read-only, but read-only does not imply final. | ||
- | + | === readOnly/0 === | |
+ | readOnly() :[[Slot]] | ||
Returns a facet allowing get/0 but not put/1. | Returns a facet allowing get/0 but not put/1. | ||
- | |||
- | |||
- |
Revision as of 20:45, 23 March 2008
A Slot is an object which provides the behavior of the binding of a noun. "&
" in the E language allows working with slots.
A slot can also be considered a zero-dimensional collection, i.e. one which has exactly one element.
Contents |
Notable implementations
Protocol
get/0
get() :any
Returns the current value of this slot.
put/1
Sets the current value to the (possibly coerced) provided value, if appropriate for this type of slot; throws if not allowed.
isFinal/0
isFinal() :boolean
Says whether the Slot acts like a FinalSlot -- successive get()
s on the same slot will always give the same value.
Note that final implies read-only, but read-only does not imply final.
readOnly/0
readOnly() :Slot
Returns a facet allowing get/0 but not put/1.