特定の引数をコンストラクター型に渡すさまざまな方法について、漠然と混乱しています。\%hash
ハッシュ参照またはリストのみを渡したいのですfoo => 1, bar => 1
が、両方croak
は渡したくありません( single elements, array reference )
。
たとえば、参照またはリストを渡します..(This works for the way I do this)
my $obj = foo->new;
my $data = $obj->dump( \%hash );
my $data = $obj->dump( foo => 1, bar => 1 );
また
my $obj = foo->dump( \%hash );
my $obj = foo->dump( foo => 1, bar => 1 );
パッケージ モジュール:
package foo;
use strict;
use Carp;
use Scalar::Util qw/reftype/;
sub new { return bless {}, shift }
sub dump {
my $class = shift;
my $self = shift;
unless ( reftype( $self ) eq reftype {} ) {
croak("Constructor method not a hash type!");
}
}
1;
ここで条件演算子を使うことも考えました? :
が、うまくエラーにできません。
my $self = reftype($_[0]) eq reftype {} ? shift : {@_};
これを行うためのより良い方法はありますか?