2014-02-06 3 views
0
sub new 
{ 
    my $class = shift; #off the first element 
    my $self = { }; 
    bless $self, $class; 
    return $self; 
} 

아무도 설명 할 수 있습니까? 다음 세 줄의 코드는 무엇을 사용합니까?Perl 스크립트에서 객체 지향 객체

my $self = { }; 
    bless $self, $class; 
    return $self; 
+5

이들은 [OO 기본 사항] (http://perldoc.perl.org/perlobj.html)입니다. –

+0

어떨까요? – user3269877

+0

축복받은 객체를 반환합니다 (이 경우 축복받은 해시 참조). '대신, 내 $ 셀프 = { 성 => "갈릴레이" 뒤따라야 => "갈릴레오" 주소 => ". 9.81 피사 Apts은" 직업 => "bombadier" }'배치하면 가정 –

답변

6
  1. my $self = { };anonymous hash reference 저장합니다 the lexical variable $ 자체에서 생성한다.

  2. bless $self, $class;은 $ self가 어떤 참조 일뿐만 아니라 실제로 $ class에 저장된 클래스의 객체라는 것을 Perl에게 알려줍니다. bless in perldoc을 참조하십시오. bless $x, $y은 $ x를 반환하고 명시 적으로 return 문으로 달리 명시하지 않는 한 서브 루틴은 항상 마지막으로 실행 된 명령문의 값을 반환하므로 다음 줄은 선택 사항이지만 가독성이 뛰어납니다.

  3. return $self; $ self (우리의 특수한 객체 참조)의 값을 호출 함수로 되 돌린다. return in perldoc을 참조하십시오.

편집 :

당신이 bless 참조를하지 않으면, 명확히하기 위해, 당신은 그것에 메서드를 호출 할 수 없습니다. bless을 사용하면 Perl에게 "이제부터 $ self에있는 참조를 $ class에있는 클래스와 연관 시키므로 해당 클래스의 메소드를 참조에 사용할 수 있습니다."

+0

'my $ self = {};'. 이 변화는 무엇을 할 것인가? – user3269877

+0

해당 키와 값을 사용하여 해시 참조를 만듭니다. 나는 당신이 [해시] (http://perldoc.perl.org/perlintro.html#Perl-variable-types) 및 아마도 [perlintro] (http://perldoc.perl.org/perlintro)의 모든 것을 읽는 것이 좋습니다. .html), 위의 [perlreftut] (http://perldoc.perl.org/perlreftut.html) 및 [perlobj] (http://perldoc.perl.org/perlobj.html)에 대한 정보를 제공합니다. 어쩌면 [Perl에 관한 책] (http://www.perl.org/books/library.html)을 찾거나 [PerlMonks] (http://www.perlmonks.org/?node=Tutorials)에 관한 좋은 자습서를 찾아보십시오.) 및 [learn.perl.org] (http://learn.perl.org/tutorials/)를 참조하십시오. – Andrejovich

+0

나는 그것을 내 의견 사용 있어요. 내가 알기를 바랍니다, @ # 배열의 사용? – user3269877