2016-09-03 31 views
2

在Gtk2hs中有Graphics.UI.Gtk.ModelView.CustomStore模塊,其中包含一個包含函數集合TreeModelIface的數據類型。它包含一組用於在用戶定義的樹類型中導航的功能,其中位置存儲爲TreeIter。所以成員功能之一是:在Gtk2hs中,爲什麼TreeModelIface函數有時需要一個ITER,有時候可能是ITER

treeModelIfaceIterNext :: TreeIter -> IO (Maybe TreeIter) 

此方法返回下一個同級節點相關聯的TreeIter,如果有一個。夠簡單。但是,下面的成員函數:

treeModelIfaceIterChildren :: Maybe TreeIter -> IO (Maybe TreeIter) 

這需要Maybe TreeIter,而不是一個簡單的TreeIter。該文檔沒有說明爲什麼,或者Nothing用於什麼參數。

問題:

  1. 爲什麼參數類型的這種變化?

  2. treeModelIfaceIterChilren iface Nothing應該返回什麼?

回答

2

它已經一段時間,因爲我用的TreeModelIface接口,但如果我沒記錯的話,這一切都與根(或頂層)樹的節點即可。所以treeModelIfaceIterChilren iface Nothing是用來檢索他們,因爲他們沒有父母。當你用treeModelIfaceIterNext迭代兄弟姐妹時,這不是問題。換句話說,要遍歷整個樹,treeModelIfaceIterChilren iface Nothing是您的出發點,並且您連續呼叫treeModelIfaceIterNexttreeModelIfaceIterChilren(具有Just的值)。

相關問題