구조 함수 중 Perl 방법 용법 소개
Perl 방법
1.Perl 방법 안내
Perl 류 의 Perl 방법 은 Perl 서브루틴 에 불과 합 니 다.즉,일반적으로 말 하 는 구성원 함수 입 니 다.Perl 방법 정 의 는 특별한 문법 을 제공 하지 않 지만 Perl 방법의 첫 번 째 매개 변 수 를 대상 으로 하거나 인 용 된 가방 으로 규정 합 니 다.Perl 에는 두 가지 Perl 방법 이 있 습 니 다.정적 Perl 방법 과 허 Perl 방법 입 니 다.정적 Perl 방법의 첫 번 째 매개 변 수 는 클래스 이름 이 고 가상 Perl 방법의 첫 번 째 매개 변 수 는 대상 의 참조 입 니 다.Perl 방법 은 첫 번 째 매개 변 수 를 처리 하 는 방식 으로 정적 인지 거짓 인지 결정 합 니 다.정적 Perl 방법 은 일반적으로 첫 번 째 인 자 를 무시 합 니 다.왜냐하면 그들 은 자신 이 어떤 종류 에 있 는 지 이미 알 고 있 기 때 문 입 니 다.구조 함수 즉 정적 Perl 방법 입 니 다.가상 Perl 방법 은 보통 첫 번 째 매개 변 수 를 변수 self 나 this 에 shift 한 다음 에 이 값 을 일반적인 참조 로 사용 합 니 다.예:
subnameLister{
my$this=shift;
my($keys,$value);
while(($key,$value)=each(%$this)){
print"\t$keyis$value.
";
}
}
2.Perl 방법의 출력지금 Cocoa.pm 패 키 지 를 인용 하려 면 Perl 방법 을 찾 을 수 없다 는 컴 파일 오류 가 발생 합 니 다.이것 은 Cocoa.pm 의 Perl 방법 이 아직 출력 되 지 않 았 기 때 문 입 니 다.Perl 방법 을 출력 하려 면 Exporter 모듈 이 필요 합 니 다.가방 의 시작 부분 에 다음 두 줄 을 더 해 야 합 니 다:requireExporter;@ISA=qw(Exporter);이 두 줄 은 Exporter.pm 모듈 을 포함 하고 Exporter 클래스 이름 을@ISA 배열 에 추가 하여 찾 을 수 있 습 니 다.다음은 당신 의 클래스 Perl 방법 을@EXPORT 배열 에 열거 하면 됩 니 다.예 를 들 어 Perl 방법 closeMain 과 declareMain 을 출력 하려 면 다음 과 같다.@EXPORT=qw(declareMain,closeMain);Perl 클래스 의 계승 은@ISA 배열 을 통 해 이 루어 집 니 다.@ISA 배열 은 어떤 가방 에서 도 정의 할 필요 가 없 지만,정의 되면 Perl 은 디 렉 터 리 이름 의 특수 배열 로 간주 합 니 다.@INC 배열 과 유사 합 니 다.@INC 는 파일 을 포함 하 는 찾기 경로 입 니 다.@ISA 배열 은 클래스(패키지)이름 을 포함 하고 있 습 니 다.펄 방법 이 현재 가방 에서 찾 을 수 없 을 때@ISA 에 있 는 가방 을 찾 습 니 다.@ISA 에는 현재 클래스 상속 의 기본 클래스 이름 도 포함 되 어 있다.
클래스 에서 호출 된 모든 Perl 방법 은 같은 클래스 나@ISA 배열 이 정의 하 는 기본 클래스 에 속 해 야 합 니 다.Perl 방법 이@ISA 배열 에서 찾 지 못 하면 Perl 은 AUTOLOAD()서브루틴 에서 찾 습 니 다.이 선택 가능 한 서브루틴 은 현재 가방 에서 sub 로 정의 합 니 다.AUTOLOAD 서브루틴 을 사용 하려 면 useAutoload 를 사용 해 야 합 니 다.문장 호출 autoload.pm 패키지.AUTOLOAD 서브루틴 은 설 치 된 Perl 라 이브 러 리 에서 호출 된 Perl 방법 을 불 러 오 려 고 시도 합 니 다.AUTOLoad 도 실패 하면 Perl 은 유 니 버 설 클래스 에 마지막 으로 시도 하고 실패 하면 Perl 은 이 해석 할 수 없 는 함수 에 대한 오 류 를 생 성 합 니 다.
3.Perl 방법의 호출
한 대상 을 호출 하 는 Perl 방법 은 두 가지 Perl 방법 이 있 는데 하 나 는 이 대상 의 인용(가상 Perl 방법)을 통 해 하 나 는 클래스 이름(정적 Perl 방법)을 직접 사용 하 는 것 이다.물론 이 Perl 방법 은 출력 되 어야 합 니 다.
현재,우 리 는 간단 한 Perl 스 크 립 트 를 써 서 이러한 Perl 방법 을 사용 합 니 다.다음은 자바 applt 소스 코드 골격 을 만 드 는 스 크 립 트 코드 입 니 다
#!/usr/bin/perl
useCocoa;
$cup=newCocoa;
$cup->setImports('java.io.InputStream','java.net.*');
$cup->declareMain("Msg","java.applet.Applet","Runnable");
$cup->closeMain();
Msg Javaapplet, (extend) java.applet.Applet (runnable), :
Cocoa::setImports($cup,'java.io.InputStream','java.net.*');
Cocoa::declareMain($cup,"Msg","java.applet.Applet","Runnable");
Cocoa::closeMain($cup);
:
/*
**CreatedbyCocoa.pm
**Useatownrisk
*/
importjava.io.InputStream;
importjava.net.*;
publicclassMsgextendsjava.applet.AppletimplementsRunnable{
}
주의:->연산 자 를 사용 하여 Perl 방법(간접 호출 이 라 고도 함)을 호출 하면 매개 변 수 는 괄호 로 묶 어야 합 니 다.예 를 들 어$cup->set Imports('java.io.InputStream','java.net.*');코코아::setImports($cup,'java.io.InputStream','java.net.*');코코아::setImports$cup,'java.io.InputStream','java.net.*'로 괄호 를 지 울 수도 있 습 니 다.무 거 운 짐
어떤 종류의 Perl 방법 을 사용 할 지 지정 해 야 할 때 가 있 습 니 다.예 를 들 어 두 종류 가 같은 이름 의 Perl 방법 이 있 을 때 입 니 다.클래스 Espresso 와 Qava 가 모두 Perl 방법 grind 를 정의 했다 고 가정 하면 사용 할 수 있 습 니 다.:연산 자 는 Qava 를 사용 하 는 Perl 방법 을 지정 합 니 다.$mess=Qava::grind("whole","lotta","bags").Qava::grind($mess,"whole","lotta","bags");프로그램의 실행 상황 에 따라 어떤 종류의 Perl 방법 을 선택 할 수 있 습 니까?이것 은 기호 참조 로 호출 할 수 있 습 니 다:$method=$local?"Qava::":"Espresso::";$cup->{$method}grind(@args);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
구조 함수를 빌려 비원형을 계승하다Object {tag: Array[3]} tag: Array[3] 0: "js" 1: "html" 2: "aa" length: 3 __proto__: Array[0] __proto__: Article construc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.