有人能逐行解释一下这段代码是做什么的吗?
如何正确理解声明的第一行?它是什么意思: Prop (Grid ())
感谢你的帮助
gridCtrl :: Window a -> [Prop (Grid ())] -> IO (Grid ())
gridCtrl parent props
= feed2 props 0 $
initialWindow $ \id rect -> \props flags ->
do g <- gridCreate parent id rect flags
gridCreateGrid g 0 0 0
set g props
return g发布于 2010-05-24 20:46:39
在wxHaskell中,控件具有可以读取或更改的附加属性。节Prop (Grid ())可以理解为“任何网格类型的属性列表”。
这是wxHaskell处理wxWidgets库是面向对象这一事实的方式。Grid ()实际上意味着“继承层次结构中的任何东西,网格都是从继承层次中派生出来的”--例如,Grid、ScrolledWindow、Panel、Window、EvtHandler、wxObject (如果你从http://wxhaskell.sourceforge.net/doc/Graphics-UI-WXCore-WxcClassTypes.html#204开始,你可以一直这样做)
当您查看控件(例如ListCtrl)的文档时,您会发现它被报告为具有一组属性和实例。基本上,您可以使用那些适用于Grid的层次结构。例如,网格派生自ScrolledWindow,因此您可以使用:
有色类的
这些属性的用法如下,例如
g <- gridCtrl parent [color := red, bgcolor := green, scrollRate := 41]
...
set g [color := blue]逐行,代码读起来类似于下面的内容:
使用所提供的属性对initialWindow进行填充(其将填充窗口属性id代码和初始(props)
使代码最难读的部分是 feed2 函数,而且代码是以“$”样式编写的,以便为feed2提供正确的参数。我上面稍微挥动一下手的解释应该足够了,但如果您想了解细节,请理解feed2只是组合的倒置函数应用程序
feed2 x y f = f x y然后用括号替换'$‘应用程序。这看起来不是很可爱,但更容易阅读。
gridCtrl parent props =
feed2 props 0
(initialWindow (\id rect ->
\props flags ->
do
g <- gridCreate parent id rect flags
gridCreateGrid g 0 0 0
set g props
return g )))https://stackoverflow.com/questions/2814966
复制相似问题