Perl中的Stringify结构

时间:2018-10-04 14:01:51

标签: perl tk perltk

在我的程序中,我有一段代码可以根据另一个列表框的值更新一个列表框。

执行此操作的代码看起来像这样。

$listBox1->bind('<<ListboxSelect>>' => sub {
    $listBox2->delete(0, 'end');
    for(@{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}}) {
        $listBox2->insert('end', $_->name);
    }
});

enter image description here

这很好。但是,我发现仅使用列表并在<<ListboxSelect>>上操作列表会更容易。我已使用-listvariable将此列表绑定到列表框。

执行此操作的代码有点像

$listBox1->bind('<<ListboxSelect>>' => sub {
    @updateableList = @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};
});

enter image description here

此方法的问题在于,hashOfArraysOfStruct包含结构,列表框包含诸如MyStruct=HASH(0x31d7e3c)之类的值。

是否可以显示结构name的{​​{1}}变量,而无需遍历整个数组并将每个结果单独插入列表框?


MCVE

MyStruct

1 个答案:

答案 0 :(得分:3)

大规模修改

更改

@updateableList = @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};

@updateableList = map { $_->name() } @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};

从结构列表中提取名称列表;