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

Selbstdefinierte Messages für Objekte



<< >> 8 Einträge, 1 Seite
Gast Gast
 2008-04-08 09:55
#108056 #108056
Hallo,

gibt es eine Möglichkeit eine Art Messages/Events auf Objekte zu definieren. Sowas wie »bind« unter Tk.

Einfaches Bsp... Ich erstelle eine Reihe von objekten und möchte diese mit nur eine Code-Zeile laden(lassen), ohne eine Schleife zu schreiben :-)

Danke!
renee
 2008-04-08 10:07
#108057 #108057
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Evtl. könnte man da etwas mit "Tie" machen. Es wäre aber ganz gut, wenn Du Dein Vorhaben etwas genauer erläutern würdest - vielleicht auch mit etwas Pseudocode.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-04-08 10:14
#108058 #108058
Es gibt unter WinAPI und C++ sowas wie Messages. Zumidest kann ich mich da an etwas Ähnliches erinnern mit MFC.

Kleines Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
package Modul1;

sub new {
return bless {}, shift;
}

sub sub1 {
# Reaktion auf Message1
}


Code: (dl )
1
2
3
4
5
6
7
8
9
#!/perl

use Modul1;

my @mods = ();

for (0..100) {
push @mods, Modul1->new;
}


Nun will ich irgendwo im Code sowas wie «call sub1» stehen und alle Objekte (0..100) rufen ihre eigene sub1 auf als Reaktion auf «call sub1».
Gast Gast
 2008-04-08 10:26
#108059 #108059
Habe mir die Seiten angekuckt.

http://perldoc.perl.org/functions/tie.html
http://perldoc.perl.org/Tie/Array.html

Ist mir leider zu hoch. Ich kann damit nichts anfange :(
nepos
 2008-04-08 11:07
#108062 #108062
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Verstehe ich das richtig? Du willst x Objekte anlegen, die alle die Methode y haben. Und wenn dann ein bestimmtes Signal/Event passiert, soll von allen diesen Objekten die Methode y aufgerufen werden?

Dann brauchst du aber einen Event-Handler, der quasi auf dieses Event reagiert und bei dem sich alle Objekte registrieren muessen, damit er sie beim Auftreten des Events mit Methode y aufrufen kann.

Oder habe ich das nun falsch verstanden?
Gast Gast
 2008-04-08 11:24
#108065 #108065
Genau so! Hast du evtl. einen Beispiel oder einen Link für mich :)
Danke!
sid burn
 2008-04-08 16:07
#108088 #108088
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Bau dir doch ganz einfach deine eigene Klasse.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
package Objects;
use strict;
use warnings;
sub new { bless [], shift }
sub add { push @{$_[0]}, $_[1] }
sub call { $_->call for @{$_[0]} }
}

{
package Object;
use strict;
use warnings;
sub new { bless {}, shift }
sub call { print "yoyoyo\n"; }
}

my $objects = Objects->new();

$objects->add( Object->new() );
$objects->add( Object->new() );

$objects->call;


Objects ist eine Klasse die alle object enthält und wenn du dort call() aufrufst, ruft es von jedem Objekt das es enthält die entsprechende Methode auf.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Gast Gast
 2008-04-08 16:37
#108089 #108089
Ok. Danke! Ein guter Vorschlag. Ich dachte aber es gibt sowas wie Events in Perl, ohne Hilfs-Objekte zu benutzen. Ich muss mein Problem noch etwas überdenken...
<< >> 8 Einträge, 1 Seite



View all threads created 2008-04-08 09:55.