Leser: 3
|< 1 2 >| | 11 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
class Foo {
my method bar {
....
}
method public_bar {
self!bar() if $I_trust_you
}
}
moritz+2008-07-16 16:59:26--Man braucht das self-zeugs in Perl 6 nur noch um auf private Methoden zuzugreifen:
KurtZ+2008-07-16 17:57:02--Hmm, weißt du wieso nicht sowas wie !bar() oder &!bar vorgesehen ist?
QuoteSind die Attribute jetzt eigentlich hinter den Kullissen immer Einträge des geblessten Hashes %$self ?
moritz+2008-07-16 18:05:06--Wenn wir eine bessere Syntax finden, die nicht mehrdeutig ist, und die auch nicht merkwürdig aussieht, könnte man ja probieren Larry zu überreden ;-)
KurtZ+2008-07-16 18:26:14--moritz+2008-07-16 18:05:06--Wenn wir eine bessere Syntax finden, die nicht mehrdeutig ist, und die auch nicht merkwürdig aussieht, könnte man ja probieren Larry zu überreden ;-)
Also ich kennen die Konvention Bezeichner für private Methoden, Attribute mit einem '_' vorweg zu schreiben.
Das wäre dann allerdings ein Symbol aus dem erlaubten Zeichensatz für Identifier.
QuoteUm einen anderes Symbol zu finden muss man in Perl ansonsten massiv rochieren, weil alle Symbole aus 7bit ASCII irgendwo genutzt werden.
Anyway ich denke es ist eh zu spät für solche Änderungswünsche ...
QuotePS: hast du meinen Nachtrag oben noch gesehen?
moritz+2008-07-16 18:49:55--KurtZ+2008-07-16 18:26:14--Das wäre dann allerdings ein Symbol aus dem erlaubten Zeichensatz für Identifier.
Und damit mehrdeutig.
moritz+2008-07-16 18:49:55--
QuotePS: hast du meinen Nachtrag oben noch gesehen?
hatte ich nicht. Die Antwort ist "ja". Ich muss das ganze Tutorial mal ein bisschen updaten, das hatte ich geschrieben als ich das Objektkmodell noch nicht so ganz verstanden hatte ;-)
KurtZ+2008-07-16 16:39:28--Um sowas zu realisieren käme man an code-filtern nicht vorbei, oder?
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 27 28 29
#!/usr/bin/perl package attribute; use Filter::Simple sub { s/(\$|\@|\%)(\.)(\w+)/selfify($1,$2,$3)/xeg; }; sub selfify { ($sigil,$twigil,$identifier)=@_; return "\$self->{$identifier}" if ($sigil eq '$'); return "$sigil\{\$self\-\>\{$identifier\}\}" if $sigil eq '%' or $sigil eq '@'; } 1; #!/usr/bin/perl use attribute; $self={ scalar => "SCALAR", array => ["ARRAY",], hash => {"HASH",}, }; print '$.scalar: ',$.scalar,"\n"; print '@.array: ',@.array,"\n"; print '%.hash: ',%.hash,"\n";
|< 1 2 >| | 11 Einträge, 2 Seiten |