Data Objects
Overview
Sometimes, a fully-defined class is overkill, and all you need is a way to attach some methods to a piece of data (i.e. a Map).
Bound Methods
When you assign an anonymous function to a Map key, any reference to @
inside the function will automatically be bound to the Map.
This lets you create dynamic objects on the fly, much like JavaScript’s object literals.
$user = { name: 'Tadala' job: 'Teacher' about: fun { return @.name ~ ' works as a ' ~ @.job } } $user.about() //= 'Tadala works as a Teacher'