我如何创建一个列表(或其他什么。而不是接受某些类型类型的不同实例的元组?具体来说,我想做以下几件事:
[labelNew (Just "foo"), buttonNewWithLabel "bar"]我不关心语法-糖,我只想把一个小部件列表传递给一个函数,这个函数会把它们传递给另一个接受任何小部件的函数。
现在,我们的目的只是消除线路噪音,就像这样。
boxPackStart box content1 PackNatural 0
boxPackStart box content2 PackNatural 0
...
boxPackStart box content100 PackNatural 0应该是
box <- col PackNatural [content1, content2, ..., content100]我发现有几页提到了一些动态列表,但当上面写着“不是打字机”时,我就停止了阅读。
发布于 2017-01-04 16:53:16
特别是对于小部件,您可以使用
toWidget :: WidgetClass o => o -> Widget若要将标签和按钮安全地向上放置到小部件,请参见:
do
label <- labelNew (Just "foo")
button <- buttonNewWithLabel "bar"
col PackNatural [toWidget label, toWidget button]其他gtk2hs类具有类似的转换功能;通常在该包集合中,to*是安全的上播,而castTo*是不安全的下播。
https://stackoverflow.com/questions/41467392
复制相似问题