Actually, I'd be as happy with chained setters - it just bothers me to
see a useless return value.  I'll keep both ideas in mind, thanks!

Derek
-- 
Derek R. Price
Solutions Architect
Ximbiot, LLC <http://ximbiot.com>
Get CVS and Subversion Support from Ximbiot!

v: +1 248.835.1260
f: +1 248.835.1263


Sartak wrote:
> Hi Derek,
> 
> On Tue, Mar 10, 2009 at 9:48 PM, Derek Price <de...@ximbiot.com> wrote:
>> Just a quick thought that occurred to me as I was reading
>> Moose::Unsweetened...  I hope the API isn't set in stone yet...
> 
> What getters and setters return certainly is set in stone. We'd break
> to many apps if we changed it three years in.
> 
> But that's okay..
> 
>>  If the
>> accessors presented there are correct, then the accessor functionality
>> might be slightly more efficient from a caller's perspective if the
>> "old" (also "current", with no arg) value was always returned.  Then,
>> something like the following could be useful:
>>
>>        my $old = $user->email_address($new);
>>
>> Whereas now, the above call would return $new, which is already known by
>> the caller and therefore not useful.
>>
>> The new accessor would look something like this:
>>
>> sub email_address {
>>    my $self = shift;
>>    my $v = $self->{email_address};
>>
>>    if (@_) {
>>        $self->_validate_email_address( $_[0] );
>>        $self->{email_address} = $_[0];
>>    }
>>
>>    return $v;
>> }
>>
>> Regards,
>>
>> Derek
> 
> Moose is quite extensible. If you're adventurous enough, you could
> make this work as an extension to Moose. I don't know if we have for
> handy examples of modifying accessors, even in the MooseX ecosystem.
> 
> I do know that a few people really want "chained" setters, which
> return the object, so that you could do:
> 
>     $datetime->set_hour(0)->set_minute(0)->set_second(0);
> 
> Your proposed extension would have a very similar structure, being
> different in only a few lines. We'd be happy to help you write it!
> 
> If you want to start poking, check out the following documentation:
> 
>     Moose::Manual::MOP
>     Moose::Manual::MooseX
> 
> As well as the "meta" and "extending" chapters of the Cookbook.
> 
> Shawn

Reply via email to