Ricardo,

As mentioned in #moose, I very much like this idea. I do have a few questions ...

On Feb 6, 2008, at 12:18 PM, Ricardo SIGNES wrote:
The initializer may be a coderef or a method name (referring to a method on the
instance.)  It's called like this:

  $instance->$initializer($value, $name, $callback);

What is $name for again?

The callback, when called, will set the instance slot to the passed- in value. It makes it easy to have your initializer do the "hard" work without having to worry about going through the several chains of methods needed to set a slot
value.  The example in the tests should look something like this:

  package Example;
  use Moose;

  has foo => (
    is => 'rw',
    initializer => sub {
      my ($self, $value, $name, $callback) = @_;
      $callback->($value * 2);
    }
  );

I wonder if callback could be optional? And if it is not called, then it will just use the return value of the initializer sub?

I think, but have not tested, that this will also work:

  package Example;
  use Moose;

  has foo => (
    is => 'rw',
    setter      => 'set_foo',
    initializer => 'set_foo',
  );

What exactly would that be useful for? I am not sure I understand without seeing an example set_foo.

- Stevan




Reply via email to