Mo::option - Allow an attribute to be a chainable, boolean option.
package Foo;
use Mo qw'option';
has this => ( option => 1 );
has that => ( option => 1 );
my $f = Foo->new;
$f->this->that(0)->do_something;
my $this = $f->read_this; # 1
my $that = $f->read_that; # 0
$f->do_something if $f->read_this;
This feature lets an accessor act as an option, that is intended to have a value
of 1 or 0. Simply calling the accessor sets the value to 1, and returns the
instance so you can chain to the next method.
To get the value of the attribute, call the
"read_<name>" accessor. Here's a trick to do that when you
are not assigning the value to anything: