2011-01-18 4 views
5

나는 펄을 조금 배웠고 내가 아는 다른 OOP 언어와 많이 다르다는 것을 알았다. GetType을 기능이없는Perl에서 C#의 GetType()과 비슷한 함수가 있습니까?

if (var.GetType() == Car) 
{ 
} 
else if (var.GetType == CarList) 
{ 
} 

가 어떻게 펄이 쓰기 않거나 하나가 :

class Car{}, class CarList{}, class Program{} 

및 방법 (의사) : 내가 좋아가는 C# 코드를 번역하려고?

+8

언어에 관계없이, 다형성보다는 일을 이렇게하는 것이 나쁜 OOP입니다. – aschepler

답변

11

많은 Perl 코드에서 객체의 클래스 이름을 찾고자한다면 ref 연산자를 사용하면됩니다. 값이 참조가 아닌 경우 정의되지 않았으므로 문자열 비교를 사용하기 전에 값을 확인해야합니다.

if(ref $var) { 
    if(ref($var) eq 'Car') { 
     # ... 
    } elsif(ref($var) eq 'CarList') { 
     # ... 
    } 
} 

C#의 is 연산자와 같은 것을 원할 가능성이 큽니다. 모든 개체에 의해 상속되는 UNIVERSALisa 메서드입니다. http://perldoc.perl.org/UNIVERSAL.html에있는 문서의 예 :

+0

멋진! 'isa'는 GetType에 훨씬 가깝습니다. – hometoast

관련 문제