将对象传递给方法 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!
我正在处理以下问题。我是 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!