Perl - Class :: Struct Deferencing array - PullRequest
0 голосов
/ 30 июля 2010
use Class::Struct;

    struct (TimingStruct => {
        _timingSense  => '$',
        _timingType   => '$',
        _relatedPin   => '$',
        _whenCond     => '$'
      });

    struct (OutPinStruct => {
        _outPinName   => '$',
        _outFunction  => '$',
        _timingarray  => '@', #_timingarc => 'TimingStruct'
      });

    my @tarray = ();
    my $t;

    $t = TimingStruct->new(_timingSense => 'Unate',
                           _timingType  => 'Wave',
                           _relatedPin  => 'CO',
                           _whenCond    => 'A ^ B'
                         );
    push(@tarray, $t);
    $t = TimingStruct->new(_timingSense => 'Combinational',
                           _timingType  => 'Rising',
                           _relatedPin  => 'ICO',
                           _whenCond    => 'A ^ B ^ CI'
                         );

    push(@tarray, $t);

    my $op = OutPinStruct->new(_outPinName => "CO",
                               _outFunction => "A ^ B ^ CI",
                               _timingarray => \@tarray);


    print $op->_outPinName  . "\n";
    print $op->_outFunction . "\n";
    print $op->_timingarray . "\n";
    my $t = ${${$op->_timingarray}[0]}[0];
    print "\$t = \$op->_timingarray = $t->_timingSense() \n";
    my @t = {$op->_timingarray};
    print "\@t = \@{\$op->_timingarray} = $$t[1] \n";

Каждый выходной вывод может иметь много дуг синхронизации, а OutPinStruct имеет массив для хранения дуг синхронизации.Я не уверен насчет разыменования массивов (_timingarray), может кто-нибудь сказать мне, что я делаю неправильно?

Спасибо.

1 Ответ

0 голосов
/ 30 июля 2010

$op->_timingarray - это «список хэшей».Как правило, ключи хеша неупорядочены, и вы не можете искать значения хеша через нумерованный индекс.Элементы, к которым вы можете получить доступ:

$op->_timingarray->[0]{'TimingStruct::_whenCond'}
$op->_timingarray->[0]{'TimingStruct::_timingSense'}
$op->_timingarray->[0]{'TimingStruct::_relatedPin'}
$op->_timingarray->[0]{'TimingStruct::_timingType'}
$op->_timingarray->[1]{'TimingStruct::_whenCond'}
$op->_timingarray->[1]{'TimingStruct::_timingSense'}
$op->_timingarray->[1]{'TimingStruct::_relatedPin'}
$op->_timingarray->[1]{'TimingStruct::_timingType'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...