在我的程序中,我有一段代码可以根据另一个列表框的值更新一个列表框。
执行此操作的代码看起来像这样。
$listBox1->bind('<<ListboxSelect>>' => sub {
$listBox2->delete(0, 'end');
for(@{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}}) {
$listBox2->insert('end', $_->name);
}
});
这很好。但是,我发现仅使用列表并在<<ListboxSelect>>
上操作列表会更容易。我已使用-listvariable
将此列表绑定到列表框。
执行此操作的代码有点像
$listBox1->bind('<<ListboxSelect>>' => sub {
@updateableList = @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};
});
此方法的问题在于,hashOfArraysOfStruct
包含结构,列表框包含诸如MyStruct=HASH(0x31d7e3c)
之类的值。
是否可以显示结构name
的{{1}}变量,而无需遍历整个数组并将每个结果单独插入列表框?
MCVE
MyStruct
答案 0 :(得分:3)
大规模修改
更改
@updateableList = @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};
到
@updateableList = map { $_->name() } @{$hashOfArraysOfStruct{$listBox1->get($listBox1->curselection)}};
从结构列表中提取名称列表;