Hello Vadim, Yary, Thanks for your feedback,
I've filed an issue: https://github.com/rakudo/rakudo/issues/3306 Yary, about the dollar sign, The snippet of code in the issue shows that expression "$.attribute" inside a method 'just works' for accessing individual attributes (or rather: implicitly invoking their accessors?), suggesting [to me] that the variable '$' can be used in the context of method lookup on "self". I would expect that it would work too when I try to invoke an attribute as a method... ...though solely printing '$' in a method yields "(Any)", not the same as printing "self"! Indeed: there's more going on that meets the eye, which makes me curious ;) Perhaps the docs mention why, I'll look for that when I have the opportunity to do so, Regards, Raymond. On Mon, 18 Nov 2019 at 18:13, Vadim Belman <vr...@lflat.org> wrote: > > I would say filing an issue might make sense in this case. Here is a > related comment from Jonathan: > https://github.com/rakudo/rakudo/issues/3222#issuecomment-539915286 – and > it explicitly states that $. is a shortcut for method calling. Therefore, > use of colon instead of braces should be a valid construct. > > Best regards, > Vadim Belman > > On Nov 18, 2019, at 11:40 AM, yary <not....@gmail.com> wrote: > > I take that back! What is the dollar sign doing there in the '$.print: > ..." example? > > Try it without the dollar sign. Right now you're calling .print on the > anonymous variable '$' > > -y > > > On Mon, Nov 18, 2019 at 8:38 AM yary <not....@gmail.com> wrote: > >> looks like a bug to me-file an issue on the rakudo GitHub >> >> On Sat, Nov 16, 2019 at 5:29 AM Raymond Dresens < >> raymond.dres...@gmail.com> wrote: >> >>> Hello, >>> >>> I have a question related to the 'colon syntax' of Raku, which allows >>> you to call methods without parenthesis like this: >>> >>> class Foo >>> { >>> method print($x, $y) >>> { >>> say "bar: {$x}, {$y}" >>> } >>> } >>> >>> my $a = Foo.new; >>> >>> $a.print: 3, 5; # ...this is what i mean with "colon syntax" ;) >>> >>> It is possible to use this syntax to call methods on 'self' as well: >>> >>> class Bar is Foo >>> { >>> method printDefault >>> { >>> self.print: 8, 12 >>> } >>> } >>> >>> my $b = Bar.new; >>> >>> $b.printDefault; >>> >>> I use $. rather than 'self' in order to work with attributes inside >>> methods in my classes, well, ... mostly, because it does not seem >>> possible to do this (in rakudo, at least version 2019.07.1): >>> >>> class Baz is Foo >>> { >>> method printDefault >>> { >>> $.print: 8, 12 >>> } >>> } >>> >>> This yields a "Confused" error, stating that it expects a so-called >>> 'colon pair'. >>> >>> Is this intentional? Because I'm kind of confused as well about this, >>> >>> I can live with this 'syntactical quirk', but I just keep wondering >>> about it because I'd personally expect that this "$.methodname: $args" >>> variant should "just work" as well... >>> >>> ...so "what gives"? ;) >>> >>> Thanks for your insights! >>> >>> Regards, >>> >>> Raymond. >>> >> -- >> -y >> > >