Schrift
[thread]11589[/thread]

Type Constraints in Moose

Leser: 1


<< >> 4 Einträge, 1 Seite
skirnir
 2008-04-06 18:38
#107956 #107956
User since
2006-05-09
29 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich spiele gerade ein bisschen mit Moose rum und kapiere die Doku von CPAN:Moose::Utils::TypeConstraints anscheinend nicht.

Ich habe aufgrund der Erklärung zu den Default Type Constraints angenommen, dass das hier funktioniert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

package MyClass;

use Moose;

has 'somearray' => ( is => 'rw', isa => 'ArrayRef[Int]');
#has 'somearray' => ( is => 'rw', isa => 'ArrayRef');

1;

package main;

my @array = (1,2);

print Dumper(@array);

my $stuff = new MyClass(somearray => \@array);
#my $stuff = new MyClass({somearray => \@array});

print Dumper($stuff);


bekomme aber stattdessen die folgende Fehlermeldung:

Code: (dl )
1
2
3
4
5
6
Attribute (somearray) does not pass the type constraint (__ANON__) with 'ARRAY(0x81d3b10)' at /usr/share/perl5/Moose/Meta/Attribute.pm line 221
Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0x84519c0)', 'Moose::Meta::Instance=HASH(0x8451eb8)', 'MyClass=HASH(0x8451ee8)', 'HASH(0x835c4e8)') called at /usr/share/perl5/Moose/Meta/Class.pm line 102
Moose::Meta::Class::construct_instance('Moose::Meta::Class=HASH(0x844b9cc)', 'somearray', 'ARRAY(0x81d3b10)') called at /usr/share/perl5/Class/MOP/Class.pm line 306
Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x844b9cc)', 'somearray', 'ARRAY(0x81d3b10)') called at /usr/share/perl5/Moose/Meta/Class.pm line 81
Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x844b9cc)', 'somearray', 'ARRAY(0x81d3b10)') called at /usr/share/perl5/Moose/Object.pm line 26
Moose::Object::new('MyClass', 'HASH(0x8152d48)') called at moose_test.pl line 23

Wenn ich statt Zeile 12 Zeile 13 benutze, funktioniert alles wie erwartet. Wie bringe ich der Klasse jetzt bei, zu prüfen, ob das Array auch Werte des Typs enthält, die ich da gern hätte?
skirnir
 2008-04-06 21:00
#107959 #107959
User since
2006-05-09
29 Artikel
BenutzerIn
[default_avatar]
War mein Fehler, wie ich soeben auf Perlmonks:678651 erfahren habe.
die libmoose-perl von Ubuntu enthält Moose 0.21, upgrade auf 0.40 hat das Problem gelöst.

EDIT: Perlmonks Link korrigiert.
pq
 2008-04-06 21:08
#107960 #107960
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wir haben übrigens auch perlmonks-tags:
Code: (dl )
[perlmonks]678651[/perlmonks]

Perlmonks:678651
=)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
skirnir
 2008-04-06 21:30
#107961 #107961
User since
2006-05-09
29 Artikel
BenutzerIn
[default_avatar]
@pq: Danke, gefixt.
<< >> 4 Einträge, 1 Seite



View all threads created 2008-04-06 18:38.