将对象传递给方法Perl

时间:2015-03-11 13:39:38

标签: perl oop object perl-module

我正在处理以下问题。我是Perl的新手。

我的想法是我有一个类,它有数组作为成员/字段(哈希) 我们将这个类命名为ProductContainer

我有另一个班级Product。这些类位于单独的文件中(单独的模块)。所以我需要在Product对象(内部数组)中添加一个ProductContainer对象。

简单的例子我在Java中需要什么。

public class ProductContainer {
 private List<Product> mProductsList;
 public addProduct(Product product) {
  this.mProductList.add(product);
  }
}

1 个答案:

答案 0 :(得分:4)

目前尚不清楚你究竟在问什么,因为你没有显示任何Perl代码。

如果您使用bless作为对象,则以下内容将向您展示如何执行此操作。我将所有包放在同一个文件中。另请注意,add方法检查其参数的类型。

#!/usr/bin/perl
use warnings;
use strict;

{   package ProductContainer;

    use Carp;

    sub new { bless {}, shift }

    sub add {
        my $self = shift;
        my $product = shift;
        croak "Invalid member" unless UNIVERSAL::DOES($product, 'Product');
        push @{ $self->{mProductsList} }, $product;
    }
}

{   package Product;

    sub new {
        my $class = shift;
        bless { name => shift }, $class
    }
}

my $p  = 'Product'->new('Product 1');
my $pc = 'ProductContainer'->new;
$pc->add($p);
$pc->add('Product 2');   # Exception!