On Sun, May 3, 2009 at 11:56 PM, fREW Schmidt <[email protected]> wrote:
> On Sun, May 3, 2009 at 2:22 PM, Hans Dieter Pearcey <[email protected]> wrote:
>
>> On Sun, May 03, 2009 at 10:24:54AM -0500, fREW Schmidt wrote:
>> > [ %{$data}->values->map->(sub { $_ + 1 }) ]
>>
>> don't dereference $data; your sanity check example uses a hashref, not a
>> hash,
>> so it works fine.
>
>
> I must be missing something, because I tried that and it still doesn't
> work. To be clear, here's the class:
Check your assumptions again because:
$ perl -MMoose::Autobox -E '{ foo => q[bar] }->values->print'
bar
$ perl -MMoose::Autobox -E '{ foo => 1 }->values->map(sub { $_ + 1 })->print'
2
# perl -MMoose::Autobox -E 'my $d = { foo => 1 }; $d->values->map(sub
{ $_ + 1 })->print'
2
$ perl -MMoose::Autobox -Moose -e 'sub foo { my $d = { f => 1 };
$d->values->map(sub { $_ + 1 })->print }; package main;
Class->new->foo()'
2
$ perl -MMoose::Autobox -MMooseX::Declare -E 'class F { method foo {
my $d = { foo => 1 }; $d->values->map(sub { $_ + 1 })->print } }
F->new()->foo'
2
Perhaps Method::Signatures isn't doing what you think?
> package Foo;
> use Moose;
> use Carp qw(croak carp cluck);
> use Method::Signatures;
> use Moose::Autobox;
>
> method foo {
> my $data = {
> foo => 1,
> bar => 2,
> };
> return {
> [ $data->values->map->(sub { $_ + 1 }) ]
> };
> }
>
> no Moose;
> __PACKAGE__->meta->make_immutable;
>
>
> And now I get this error:
>
> Can't call method "values" on unblessed reference
>
>
>
> --
> fREW Schmidt
> http://blog.afoolishmanifesto.com
>