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: [EMAIL PROTECTED]
Alex Gutteridge
EBI
Wellcome Trust Genome Campus
Hinxton
Cambs CB10 1SD
UK
Tel: 01223 492546
Email: [EMAIL PROTECTED]