首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell: wxHaskell中的网格

Haskell: wxHaskell中的网格
EN

Stack Overflow用户
提问于 2010-05-12 06:47:06
回答 1查看 467关注 0票数 0

有人能逐行解释一下这段代码是做什么的吗?

如何正确理解声明的第一行?它是什么意思: Prop (Grid ())

感谢你的帮助

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,因此您可以使用:

有色类的

  • 属性颜色,如bgcolor,color
  • etc.

这些属性的用法如下,例如

代码语言:javascript
复制
g <- gridCtrl parent [color := red, bgcolor := green, scrollRate := 41]
...
set g [color := blue]

逐行,代码读起来类似于下面的内容:

使用所提供的属性对initialWindow进行填充(其将填充窗口属性id代码和初始(props)

  • and _initialWindow__
  • __),调用order:
  • gridCreate中的浮动包装函数以创建新的网格和新的网格实例,在网格内部设置具有0行、0列和零的内容以及调用者提供给网格的属性(
    • <>E233>)(例如,将数据放入( data in,设置样式等)

使代码最难读的部分是 feed2 函数,而且代码是以“$”样式编写的,以便为feed2提供正确的参数。我上面稍微挥动一下手的解释应该足够了,但如果您想了解细节,请理解feed2只是组合的倒置函数应用程序

代码语言:javascript
复制
feed2 x y f = f x y

然后用括号替换'$‘应用程序。这看起来不是很可爱,但更容易阅读。

代码语言:javascript
复制
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 )))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2814966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档