Method `->=()

Method `->=

mixed `->=(object arg, string index, mixed val)
mixed `->=(mapping arg, string index, mixed val)
bool `->=(multiset arg, string index, bool val)


Arrow index assignment.

Every lvalue expression with the -> operator becomes a call to this function, i.e. a->b=c is the same as predef::`->=(a,"b",c) where "b" is the symbol b in string form.

This function behaves like `[]=, except that the index is passed literally as a string instead of being evaluated.

If arg is an object that implements lfun::`->=(), that function will be called with index and val as the arguments.

arg can have any of the following types:

The non-protected (ie public) variable named index will be looked up in arg, and assigned val.


Index index in arg will be assigned val.


If val is 0 (zero), one occurrance of index in arg will be removed. Otherwise index will be added to arg if it is not already there.


val will be returned.


In an expression a->b=c, the symbol b can be any token that matches the identifier syntax - keywords are disregarded in that context.


An arrow indexing expression in a non-lvalue context, i.e. where the index is being queried instead of assigned, uses `-> instead of this function.

See also

`[]=(), lfun::`->=(), `->