I had attached the file in question, I just forgot to mention as much >.<

However, this is irrelevant, as I found the solution to the problem. I did
not realized that attributes of type HashRef are apparently lazy by default
(*citation needed*). One way or another, for whatever reason, the HashRef
attributes do not seem to exist until I start populating them (meaning that
it's a bit more frustrating to use them if I don't want a default value...

Anyway, thanks for your help,
Faelin Landy



On Tue, Jun 25, 2013 at 10:23 PM, Kent Fredric <kentfred...@gmail.com>wrote:

>
>
> On 26 June 2013 09:54, Faelin McCaley Landy <faelin.la...@gmail.com>wrote:
>
>> Here's a sample of the code in question (assume the appropriate pragmas
>> for type constraints):
>>
>>
>> has 'locations' => (
>>     traits  => ['Hash'],
>>     is  => 'ro',
>>     isa => 'HashRef[Location]',
>>     handles => {
>>         add_loc => 'set',
>>         del_loc => 'delete',
>>         get_loc => 'get',
>> loc_keys => 'keys',
>>  loc_vals => 'values',
>>         no_locs => 'is_empty',
>>         loc_count => 'count',
>> loc_pairs => 'kv',
>>     },
>> );
>>
>>
>> has 'regions' => (
>>     traits  => ['Hash'],
>>     is  => 'ro',
>>     isa => 'HashRef[Region]',
>>     handles => {
>>         add_region => 'set',
>>         del_region => 'delete',
>>         get_region => 'get',
>>  region_keys => 'keys',
>> region_vals => 'values',
>>         no_regions => 'is_empty',
>>         region_count => 'count',
>>  region_pairs => 'kv',
>>     },
>> );
>>
>> When I attempt to access the locations hashref or its handles from
>> within this class, I only get an error saying that it could not find the
>> requested hash/function. However, when I attempt to access the regions 
>> hashref/handles,
>> it has no problems.
>>
>>
>>
> That code is good and dandy, but to understand whats going wrong, we'll
> need the rest of the code, because its entirely likely the problem is how
> you're invoking it, or the surrounding context that defines the object
> you're invoking the function on.
>
> For instance, if your code is something like
>
>  sub foo {
>     my ( $self );
>     $self->locations;
>  }
>
>
> Then your problem is not that you're calling 'locations' wrong, but that
> '$self' is undefined. And the definition of 'locations' is irrelevant to
> the question.
>
> >  When I attempt to access the locations hashref or its handles from
> within this class, I only get an error saying that it could not find the
> requested hash/function. However, when I attempt to access the regions 
> hashref/handles,
> it has no problems.
>
> ^ this indicates to me that a calling-side problem is occurring, not a
> class definition problem.
>
>
> So please, pastebin a large chunk of code to a pastebin which replicates
> your issue, which we can run locally.
>
> --
> Kent
>

Reply via email to