Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7158[/thread]

Prototypen: Wie? Was? Wozu?

Leser: 1


<< >> 7 Einträge, 1 Seite
pktm
 2005-07-26 00:38
#56656 #56656
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe da ein Modul geschrieben in dem es eine Methode namens push2substitute gibt.
Diese nimmt Name-Wert-Paare entgegen um sie wo abzuegen, von wo sie später in ein HTML-Template eingefügt werden.

Jetzt möchte ich diese Methode so ähnlich verwenden können wie die Param-Methode von HTML-Template.
Ich möchte sowohl einzelne Name-Wert-Paare als auch eine ganze Hashreferenz an Name-Wert-Paaren übergeben können.
Jetzt dachte ich mir, dass ich das mit Prototypen machen kann.
Aber wenn ich die Methode einmal als sub meth ($$){} und einmal als sub meth (\%){} deklariere kommt die Fehlermeldung
Quote
[Mon Jul 25 22:17:25 2005] CMS.pm: Prototype mismatch: sub CMS::_set2substitute ($$) vs (\%) at ../../pm/CMS.pm line 554.
[Mon Jul 25 22:17:25 2005] CMS.pm: Subroutine _set2substitute redefined at ../../pm/CMS.pm line 544.


Was nun?
Mir wäre im übrigen auch eine Methode recht, bei der die Parameter einfach abgefragt werden (also ob es 2 Skalare sind oder eine Hashreferenz), aber ich finde die andere Lösung irgendwie schöner.
Außerdem möchte ich das können.

Grüße, pktm

PS: An perdoc.perlfunc.prototypes bin ich noch dran...
http://www.intergastro-service.de (mein erstes CMS :) )
Ishka
 2005-07-26 00:49
#56657 #56657
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
if(2==@_ && not ref $_[0] && not ref $_[1]){...}
elsif(1==@_ && 'HASH' eq ref $_[0]){...}
else{print "falsche Parameter\n"}
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
sri
 2005-07-26 01:10
#56658 #56658
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Soetwas gibt es nur in Perl6.
pktm
 2005-07-26 01:28
#56659 #56659
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wozu sind dann die Prototypen in Perl?
Etwa nur zur trivialen Einfach-Prüfung einer Parameterliste???
http://www.intergastro-service.de (mein erstes CMS :) )
Gast Gast
 2005-07-26 01:38
#56660 #56660
Jep. Und um den Kontext zu beeinflußen etc. Haben aber nichts mit den aus C & Co. bekannten Prototypen zu tun.
sri
 2005-07-26 01:41
#56661 #56661
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Prototypen sind sehr nuetzlich wenn du XS nutzt.
pq
 2005-07-26 02:23
#56662 #56662
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pktm,25.07.2005, 23:28]Wozu sind dann die Prototypen in Perl?
Etwa nur zur trivialen Einfach-Prüfung einer Parameterliste???[/quote]
z.B. Wiki:map einmal anders
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 7 Einträge, 1 Seite



View all threads created 2005-07-26 00:38.