(atsign tag) tag: a sym
Accesses a method's self-object.
In all of those contexts, there is a hidden local variable which represents the "self
object" - that is, the object which is receiving the method call, or the object which
contains the field, or the class which contains the constant, etc.
@ can be used to
access that hidden local variable.
The local variable can be captured by a closure, so
fn will work as expected.
Otherwise, for an arbitrary symbol
@name has one of the following meanings:
@nameis equivalent to
[@self 'name]. It accesses a field or property on the self-object.
(? @name)is equivalent to
[@self (? 'name)]. It accesses a field or property on the self-object which may be absent.
(@name arg0)is equivalent to
(.name @self arg0). It invokes a method on the self-object.
((? @name) arg0)is equivalent to
((? .name) @self arg0). It invokes a method on the self-object which may be absent.
In a method parameter list, when a parameter's name is prefixed with
@, that method
will prefix its body with
(= @name name), assigning the value of that
parameter to the corresponding field or property.