Problems with defining a class
Hi, The following fairly simple code works well: class A { has num $!a is required is built; }; dd A.new(a => 1e0); producing "A.new(a => 1e0)". However, if we make a slight change: class A { has num $!a is required is built; }; dd A.new(a => 0e0); (i.e. initialising to 0 instead of 1), we get The attribute '$!a' is required, but you did not provide a value for it. in block at test.raku line 5 Any value except 0 seems to work fine. Am I doing something stupid, or is this a problem with rakudo? Kevin.
Re: Problems with defining a class
It seems to work okay if I change `num` to `Num`: class A { has Num $!a is required is built; }; dd A.new(a => 0e0); #returns: A.new(a => 0e0) Note, I'm on a fairly old version of Rakudo [moar (2021.06). HTH, Bill. On Tue, Aug 23, 2022 at 6:47 PM Kevin Pye wrote: > > Hi, > > The following fairly simple code works well: > >class A { > has num $!a is required is built; > }; > > dd A.new(a => 1e0); > > producing "A.new(a => 1e0)". > > However, if we make a slight change: > >class A { > has num $!a is required is built; > }; > > dd A.new(a => 0e0); > > (i.e. initialising to 0 instead of 1), we get > >The attribute '$!a' is required, but you did not provide a value for it. >in block at test.raku line 5 > > Any value except 0 seems to work fine. > > Am I doing something stupid, or is this a problem with rakudo? > > Kevin.
Re: Problems with defining a class
That makes some reasonable sense. I guess "is required" and native attributes are more-or-less incompatible. Kevin. On Wed, 24 Aug 2022, at 12:45, William Michels via perl6-users wrote: > It seems to work okay if I change `num` to `Num`: > > class A { > has Num $!a is required is built; > }; > > dd A.new(a => 0e0); > > > #returns: > > A.new(a => 0e0) > > Note, I'm on a fairly old version of Rakudo [moar (2021.06). > > HTH, Bill. > > > On Tue, Aug 23, 2022 at 6:47 PM Kevin Pye wrote: >> >> Hi, >> >> The following fairly simple code works well: >> >>class A { >> has num $!a is required is built; >> }; >> >> dd A.new(a => 1e0); >> >> producing "A.new(a => 1e0)". >> >> However, if we make a slight change: >> >>class A { >> has num $!a is required is built; >> }; >> >> dd A.new(a => 0e0); >> >> (i.e. initialising to 0 instead of 1), we get >> >>The attribute '$!a' is required, but you did not provide a value for it. >>in block at test.raku line 5 >> >> Any value except 0 seems to work fine. >> >> Am I doing something stupid, or is this a problem with rakudo? >> >> Kevin.