2011-03-29 60 views
1

如果我有一个如下所示的Java类,那么对于相同的Perl表示形式是什么?将Perl数组作为对象变量

class Temp { 
    int my_int; 
    int my_array[]; 

    Temp() { 
    } 
}; 

具体来说,我有兴趣知道如何使用数组作为对象变量?

回答

7

简短的回答是:(!多)

package Temp; 

sub new { 
    my $self = bless { 
     'my_int' => 0, 
     'my_array' => [] # The trick here is to use an array *reference* 
         # hence the square brackets rather than() 
    }; 
    return $self; 
} 

对于较长的答案,看看perlrefperllol,并perlboot的介绍,参考文献列表,列表和OOP集训,分别。一旦你掌握了基本知识,在Perl中考虑使用Moose来实现更高级的OOP方法。

+2

在...看看和驼鹿 – ysth 2011-03-29 04:40:30

+0

良好的通话 - 补充说,我的答案。 – 2011-03-29 04:43:05

4

使用Moose,类可以写成:

package Temp; 

use Moose; 

has 'my_int' => (
    'is' => 'rw', 
    'isa' => 'Int', 
); 

has 'my_array' => (
    'is' => 'rw', 
    'isa' => 'ArrayRef[Int]', 
); 

__PACKAGE__->meta->make_immutable();