Десериализация типа переменной использование массива JSON DataContractJsonSerializer

Это - полностью не изящное решение, и при этом это не лучшее решение никаким фрагментом воображения. Но это интересно!

package zip;

sub TIEARRAY {
    my ($class, @self) = @_;
    bless \@self, $class;
}

sub FETCH {
    my ($self, $index) = @_;
    $self->[$index % @$self][$index / @$self];
}

sub STORE {
    my ($self, $index, $value) = @_;
    $self->[$index % @$self][$index / @$self] = $value;
}

sub FETCHSIZE {
    my ($self) = @_;
    my $size = 0;
    @$_ > $size and $size = @$_ for @$self;
    $size * @$self;
}

sub CLEAR {
    my ($self) = @_;
    @$_ = () for @$self;
}

package main;

my @a = qw(a b c d e f g);
my @b = 1 .. 7;

tie my @c, zip => \@a, \@b;

print "@c\n";  # ==> a 1 b 2 c 3 d 4 e 5 f 6 g 7

Как обработать STORESIZE/PUSH/POP/SHIFT/UNSHIFT/SPLICE осуществление, оставленное читателю.

9
задан James Newton-King 2 August 2009 в 09:52
поделиться