【问题标题】:Create array of structures in Perl在 Perl 中创建结构数组
【发布时间】:2013-02-16 21:09:12
【问题描述】:
use Class::Struct;

struct(TradeId => [
        tradeIdScheme => '$',
        id => '$',
]);

struct(VersionedTradeId => [
        tradeId => 'TradeId',
        version => '$',
        effectiveDate => '@',
]);

我想在“VersionedTradeId”结构中创建一个“TradeId”数组。

【问题讨论】:

    标签: perl perl-data-structures


    【解决方案1】:

    试试这个:http://www.nntp.perl.org/group/perl.beginners/2007/09/msg95440.html

    参见 Class::Struct 文档中的示例 1:

    示例 1

    给一个结构元素一个类类型也是一个结构是结构嵌套的方式。在这里,Timeval 代表一个时间(秒和微秒),Rusage 有两个元素,每个元素都是 Timeval 类型。

    use Class::Struct;
    struct( Rusage => {
    ru_utime => '@', # user time used
    ru_stime => 'Timeval', # system time used
    });
    struct( Timeval => [
    tv_secs => '$', # seconds
    tv_usecs => '$', # microseconds
    ]);
    # create an object:
    my $t = Rusage->new(ru_utime=>[Timeval->new(), Timeval->new(), Timeval->new()], ru_stime=>Timeval->new());
    # $t->ru_utime and $t->ru_stime are objects of type Timeval.
    # set $t->ru_utime to 100.0 sec and $t->ru_stime to 5.0 sec.
    $t->ru_utime->tv_secs(100);
    $t->ru_utime->tv_usecs(0);
    $t->ru_stime->tv_secs(5);
    $t->ru_stime->tv_usecs(0);
    

    【讨论】:

    • 我确实尝试过,它单独工作正常 - 但不太确定如何使用它来创建嵌套结构。
    • 我想要像 ru_utime ='@Timeval' 这样的东西,这样 ru_utime 就会包含一个 'Timeval' 值的数组。
    • 它确实有效,但我不希望 ru_utime 成为一个数组。相反,我正在寻找一个 ru_utime 数组。 C 中类似的东西就像 struct books { int bookid;} 然后创建类似 struct books book[10];
    • 请澄清,这对我来说似乎是一个数组/aref
    • struct books { int bookid; 怎么样? char bookname[20];} 然后创建 struct library_item { struct books book[10]; struct cds cd[10];} 正如你所看到的,我需要创建 10 个 book 类型的结构,而不是结构书内的 10 个书名。我希望你明白我在问什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多