将对象传递给方法 Perl

Passing object into the method Perl

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

我的想法是,我有一个 class,它的数组为 member/field(在散列中)。
我们将其命名为 class ProductContainer.

我还有一个classProduct。这些 类 在单独的文件(单独的模块)中。所以我只需要将一个 Product 对象添加到 ProductContainer 对象(内部数组)中。

我在 Java 中需要的简单示例。

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

不清楚你到底在问什么,因为你没有显示任何 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!