구조 함수 중 Perl 방법 용법 소개

4042 단어 구조 함수Perl
Perl 언어 에서 Perl 방법의 개념 을 알 고 있 는 지 여 부 를 간단히 소개 합 니 다.Perl 류 의 Perl 방법 은 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);

좋은 웹페이지 즐겨찾기