Hi,
I've written up the case I found as a test, please feel free to add
it if it's useful. All tests pass apart from the last one which tests
attribute chaining. Tested on Pugs 6.2.5.
#!/usr/bin/pugs
use v6;
use Test;
plan 7;
#Setup
class Foo {
has $.bar is rw;
}
my $foo = Foo.new;
my $foo2 = Foo.new;
#Sanity check
isa_ok($foo, 'Foo');
isa_ok($foo2, 'Foo');
#Setup chain
$foo.bar = $foo2;
$foo2.bar = 'baz';
#Sanity check part two
is($foo2.bar, 'baz', '... got the right value in $foo2');
is($foo.bar =:= $foo2, 1, '... $foo is storing $foo2');
#Extract last part of chain
my $foo3 = $foo.bar;
#and check its fine
is($foo3 =:= $foo2, 1, '... we can retrieve $foo2 as $foo3');
is($foo3.bar, 'baz', '... got the right value in $foo3');
#Check chaining
lives_ok{
$foo.bar.bar == 'baz' ;
}, '... attribute chaining is OK';
On 24 May 2005, at 12:52, Adrian Taylor wrote:
> Hi,
> I have seen similar weirdness and added a couple of tests over the
> weekend, whilst simultaneously forgetting to mention it on IRC:
> class Foo {
> method noargs () { 42 }
> method callsmethod2 { .noargs(); }
> }
> $val = $foo.callsmethod2()
> dies. (t/oo/method/instance.t)
> It appears to be something to do with whether the methods are declared
> with brackets (method callsmethod2 versus method callsmethod2()).
> Maybe this is related.
> Cheers
> Ade
> Alex Gutteridge wrote:
>> Hi,
>> Just playing around with pugs 6.2.5 OO and couldn't work this out:
>> class Bowl {
>> has $.fish is rw;
>> has $.water is rw;
>> }
>> class Fish {
>> has $.bowl is rw;
>> has $.eyes is rw;
>> }
>> my $bowl = Bowl.new;
>> my $blinky = Fish.new;
>> $bowl.water = 'Murky';
>> $blinky.eyes = 3;
>> $bowl.fish = $blinky;
>> $blinky.bowl = $bowl;
>> $bowl.water.say;
>> $blinky.eyes.say;
>> my $blinkys_bowl = $blinky.bowl;
>> $blinkys_bowl.water.say;
>> my $fishy = $bowl.fish;
>> $fishy.eyes.say;
>> $bowl.fish.eyes.say;
>> $blinky.bowl.water.say;
>> The output I get:
>> Murky
>> 3
>> Murky
>> 3
>> *** No compatible subroutine found: "&eyes"
>> at Desktop/testOO.pl line 27, column 1-20
>> Am I missing something in the syntax when I try to chain the
>> attribute methods? Or is this not implemented in pugs yet?
>> Thanks for any help.
>> Alex Gutteridge
>> EBI
>> Wellcome Trust Genome Campus
>> Hinxton
>> Cambs CB10 1SD
>> UK
>> Tel: 01223 492546
>> Email: al...@ebi.ac.uk
Alex Gutteridge
EBI
Wellcome Trust Genome Campus
Hinxton
Cambs CB10 1SD
UK
Tel: 01223 492546
Email: al...@ebi.ac.uk