Zunächst einmal, um herauszufinden, ich versuche, ist $_
keine Funktion. Es ist nur eine gewöhnliche Variable (die zufällig von vielen Builtins gelesen und geändert wird).
Zweitens, der Code, den Sie gepostet haben, verwendet $_
nicht. Es greift auf Elemente der @_
, der Parameterliste zu.
Eine besser lesbare Version des Codes Sie wäre posted:
ist
sub copyText {
my ($arg1, $arg2) = @_;
while ($arg1) {
$arg2->Empty();
$arg1 = $arg2->IsText();
sleep(1);
}
$_[0] = $arg1; # arg1 is passed by reference
}
- arg1 ein boolean als Referenz übergeben.
- arg2 ist eine Art von Objekt mit einer Methode namens
Empty
und eine mit dem Namen IsText
.
Sorry, ich weiß nicht C#, aber hoffentlich können Sie damit weitermachen.
Für diejenigen von uns, die C#, aber nicht Perl kennen, können Sie uns sagen, was '$ _' tut? Oder vielleicht erklären, was Sie versuchen zu tun. Eine strikte Konvertierung von einer Sprache in eine andere kann nicht das beste Ergebnis haben. Es kann sein, als würde man fragen, wie man eine Schraube mit einem Hammer benutzt. – cadrell0
@ cadrell0, '$ _' wird oben nicht verwendet. '$ _ [0]' und '$ _ [1]' sind das erste und zweite Element des Arrays '@ _'. '@ _' ist die Liste der Argumente, die an die Subroutine übergeben werden. Die Elemente von "@ _" werden mit den tatsächlichen Argumenten verknüpft (übergeben durch Ref) und nicht als Kopien (Wert übergeben). – ikegami
@ikegami Deshalb benutze ich nicht perl :). '$ _ [0]' verweist auf das Array '@ _'? Oder ist der OP-Code falsch? – cadrell0