Perl의 $_
기능과 동일한 기능이 있습니까? 나는 C#에서 오래된 Perl 스크립트를 다시 작성하고 Perl을 전혀 배웠다. Heres는 내가 모든
sub copyText {
while($_[0]){
$_[1]->Empty();
$_[0] = $_[1]->IsText();
sleep(1);
}
Perl의 $_
기능과 동일한 기능이 있습니까? 나는 C#에서 오래된 Perl 스크립트를 다시 작성하고 Perl을 전혀 배웠다. Heres는 내가 모든
sub copyText {
while($_[0]){
$_[1]->Empty();
$_[0] = $_[1]->IsText();
sleep(1);
}
먼저 알아 내려고 노력하고있어의 예는, $_
는 함수가 아닙니다. 이것은 단지 일반적인 변수입니다 (많은 builtins에 의해 읽혀지고 변경됩니다).
두 번째로, 게시 한 코드는 $_
을 사용하지 않습니다. 매개 변수 목록 인 @_
의 요소에 액세스하고 있습니다. 당신이 될 것이다 게시 된 코드의
보다 더 읽기 버전 :
sub copyText {
my ($arg1, $arg2) = @_;
while ($arg1) {
$arg2->Empty();
$arg1 = $arg2->IsText();
sleep(1);
}
$_[0] = $arg1; # arg1 is passed by reference
}
Empty
이라는 메서드와 IsText
이라는 메서드가있는 일종의 개체입니다.죄송합니다, C#은 잘 모르지만 잘하면 이걸로 이동할 수 있습니다.
펄의
$_
기능은
이 기능이 아니다. 그것은 '그것'을 의미하는 대명사입니다.
또 다른 특수 변수 @_
이 있는데, 'them'을 의미하는 대명사입니다.
C#에는 아날로그가 없습니다.
이에 따라 $ _ [0]은 0 번째 색인을 의미합니다. 스칼라 (@ _)는 그것들의 개수 등을 반환합니다. – singingfish
C#은 알고 있지만 펄은 아는 사람들에게는 '$ _'이 무엇을 의미하는지 알려주실 수 있습니까? 또는 무엇을 하려는지 설명하십시오. 한 언어에서 다른 언어로 엄격한 변환을하면 최상의 결과를 얻지 못할 수도 있습니다. 그것은 망치로 나사를 사용하는 법을 묻는 것과 같을 수 있습니다. – cadrell0
@ cadrell0,'$ _'은 위에 사용되지 않았습니다. '$ _ [0]'과'$ _ [1]'은 배열'@ _ '의 첫번째와 두번째 요소입니다. '@ _'는 서브에 전달 된 인자들의리스트입니다. '@ _ '의 원소들은 복사 (값에 의한 전달)보다는 실제 args (참조로 전달)에 앨리어싱되어있다. – ikegami
@ikegami 이것이 내가 perl을 사용하지 않는 이유입니다. :) '$ _ [0]'은 배열'@ _ '을 참조합니까? 또는 OP의 코드가 잘못 되었습니까? – cadrell0