Schrift
[thread]8028[/thread]

@_?

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Mathias
 2006-05-29 21:17
#66699 #66699
User since
2006-03-16
36 Artikel
BenutzerIn
[default_avatar]
Is vieleicht eine sehr blöde frage aber ich verstehe die standart array

Code: (dl )
@_


nicht.

Was wird darin gespeichert??

könnt ihr mir vieleicht ein paar beispiele nennen wo sie verwendung findet, wäre echt sehr nett.

Vielen dank schon mal ^^
greets =)
renee
 2006-05-29 21:25
#66700 #66700
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es findet z.B. bei der Parameterübergabe von Methoden Verwendung:

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

use strict;
use warnings;

methode('Param1','Param2');

sub methode{
print $_,"\n" for(@_);
}
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/
pq
 2006-05-29 23:03
#66701 #66701
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
renee: du meinst subroutinen und methoden. wobei methoden nur eine
besondere form von subroutinen sind. das, was da bei dir im code
steht, würde ich haber eindeutig *nicht* als methode bezeichnen =)
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
renee
 2006-05-29 23:10
#66702 #66702
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@pq: Das sind die letzten Reste meiner Java-Zeit ;) Und im Moment bin ich dank Bachelor-Thesis wieder mitten im Java-Geschehen...

Natürlich meinte ich Subroutinen und Methoden!
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/
Mathias
 2006-05-29 23:23
#66703 #66703
User since
2006-03-16
36 Artikel
BenutzerIn
[default_avatar]
Vielen Dank ^^
greets =)
pktm
 2006-05-30 01:22
#66704 #66704
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=renee,29.05.2006, 21:10]@pq: Das sind die letzten Reste meiner Java-Zeit ;) Und im Moment bin ich dank Bachelor-Thesis wieder mitten im Java-Geschehen...

Natürlich meinte ich Subroutinen und Methoden![/quote]
Wo liegt denn der Unterschied?
http://www.intergastro-service.de (mein erstes CMS :) )
bloonix
 2006-05-30 03:48
#66705 #66705
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pktm,29.05.2006, 23:22]Wo liegt denn der Unterschied?[/quote]
Wenn man es genauer betrachtet gibt es keinen Unterschied, denn beides
wird mittels sub{} deklariert. Allerdings gibt es Unterschiede, wenn
man die Funktionen ansprechen möchte, denn echte Methoden müssen
anders angesprochen werden, denn als erstes Argument wird der
Packetname erwartet.

Beispiel
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
24
25
26
27
28
29
30
use strict;
use warnings;

package TestModul;

use strict;
use warnings;
use Data::Dumper;

sub method1 { print "$_\n" for @_ }
sub method2 { print "$_\n" for @_ }
sub method3 { my @arr = @_; return bless \@arr, shift; }
sub method4 { print Dumper(\@_) }

1;

use TestModul;

# Jemand, der versucht, ueber ein Objekt eine Methode anzusprechen,
# wuerde ein "die" ausloesen - aus diesem Grund verwende ich hier ein
# eval{}, damit das Skript nicht abbricht.
eval {
  my $obj = method1 TestModul(1);
  $obj->method2(1);
} or warn $!;

# Hier bricht das Skript nicht ab, da method3() den Packetnamen
# an $obj zurueckliefert.
my $obj = method3 TestModul(1);
$obj->method4(1);


Ausgabe:
TestModul
1
Can't call method "method2" without a package or object reference at ./test.pl line 26.
       ...caught at ./test.pl line 24.

$VAR1 = [
         bless( [
                  'TestModul',
                  1
                ], 'TestModul' ),
         1
       ];



Das sind Feinheiten, auf die man reinfallen kann, deshalb behaupte ich
jetzt einfach mal, dass pq sehr richtig liegt.\n\n

<!--EDIT|opi|1148947236-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
sri
 2006-05-30 04:09
#66706 #66706
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich hab zwar nicht verstanden was opi sagen wollte aber der grosse unterschied zwischen Methode und Subroutine ist die Vererbung.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
package Foo;
use strict;

sub foo { print "foo\n" }

package Bar;
use strict;
use base 'Foo';

package main;

Bar->foo();
Bar::foo();


Es wird ein "invocant" benoetigt um die richtige "Methode" zu finden.
shaihulud
 2006-05-30 04:41
#66707 #66707
User since
2006-04-12
76 Artikel
BenutzerIn
[default_avatar]
laut wikipedia:

Methoden
Die einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden.

Häufig wird der Begriff Methode synonym zu Funktion oder Prozedur gebraucht, obwohl die Funktion oder Prozedur eher als Implementierung einer Methode zu betrachten ist. Im täglichen Sprachgebrauch sagt man auch "Objekt A ruft Methode m von Objekt B auf."
pq
 2006-05-30 16:30
#66708 #66708
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich hab opi auch nicht verstanden.

in perl ist der unterschied nicht syntaktisch (in der deklaration). eine methode wird ganz normal
als subroutine deklariert. deswegen sagte ich, eine methode ist nur eine
besondere form einer subroutine. der unterschied ist semantisch. eine
methode erwartet als ersten parameter ein objekt (die objekt-methode)
oder den klassennamen (klassen-methode).
man kann methoden sogar wie subroutinen aufrufen, also statt
$obj->method mit Class::method($obj). hierbei wird aber eine
eventuelle vererbungshierarchie nicht beachtet.

edit: also eigentlich unterscheidet sich eine methode von einer subroutine
nur im stil des aufrufens. die variante Class::method($obj) ist
eigentlich nicht mehr als ein subroutinen-aufruf.\n\n

<!--EDIT|pq|1148994416-->
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
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2006-05-29 21:17.