Haskell 在Gtk2hs中,为什么TreeModelFace函数有时需要一个Iter,有时可能需要一个Iter
在Gtk2hs中有Haskell 在Gtk2hs中,为什么TreeModelFace函数有时需要一个Iter,有时可能需要一个Iter,haskell,gtk2hs,Haskell,Gtk2hs,在Gtk2hs中有Graphics.UI.Gtk.ModelView.CustomStore模块,其中包含一个包含函数集合的数据类型。它包含一系列函数,用于在用户定义的树类型中导航,其中位置存储为TreeIter。因此,成员函数之一是: treeModelIfaceIterNext :: TreeIter -> IO (Maybe TreeIter) 这将返回与下一个同级节点(如果存在)关联的TreeIter。很简单。但以下成员函数是: treeModelIfaceIterChildre
Graphics.UI.Gtk.ModelView.CustomStore
模块,其中包含一个包含函数集合的数据类型。它包含一系列函数,用于在用户定义的树类型中导航,其中位置存储为TreeIter
。因此,成员函数之一是:
treeModelIfaceIterNext :: TreeIter -> IO (Maybe TreeIter)
这将返回与下一个同级节点(如果存在)关联的TreeIter
。很简单。但以下成员函数是:
treeModelIfaceIterChildren :: Maybe TreeIter -> IO (Maybe TreeIter)
这需要一个可能的树编辑器
,而不是一个简单的树编辑器
。文档中没有说明为什么使用Nothing
的参数,也没有说明它的作用
问题:
treeModelIfaceIterChilren应该返回什么
自从我使用
TreeModelIface
接口以来,已经有一段时间了,但如果我没记错的话,这一切都与树的根(或顶级)节点有关。因此,如果不使用任何东西来检索它们,则treeModelIfaceIterChilren,因为它们没有父对象。当您使用treeModelIfaceIterNext
对同级进行迭代时,这不是问题。换句话说,要遍历整个树,treemodeliefaceiterchilren(如果没有任何内容)
是您的起点,并且您可以依次调用treemodeliefaceiternext
和treemodeliefaceiterchilren
(仅使用值)