【问题标题】:Passing object into the method Perl将对象传递给 Perl 方法
【发布时间】:2015-03-11 13:39:38
【问题描述】:

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

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

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

Java 中我需要的简单示例。

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

【问题讨论】:

标签: perl oop object perl-module


【解决方案1】:

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

【讨论】:

  • 不好意思,没有提供代码,这正是我需要的,我正在使用bless
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2011-09-27
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
相关资源
最近更新 更多