2016-09-03 6 views
2

Gtk2hs에는 Graphics.UI.Gtk.ModelView.CustomStore 모듈이 있습니다.이 모듈에는 함수 모음이 포함 된 데이터 유형 TreeModelIface이 포함되어 있습니다. 여기에는 위치가 TreeIter으로 저장되는 사용자 정의 트리 유형을 탐색하기위한 여러 기능이 있습니다. 그래서 멤버 함수 중 하나입니다 : 존재하는 경우Gtk2hs에서 TreeModelIface 함수가 때때로 Iter를 취하는 이유는 무엇입니까? 아마도

treeModelIfaceIterNext :: TreeIter -> IO (Maybe TreeIter) 

이, 다음 형제 노드와 연관된 TreeIter을 반환합니다. 충분히 간단합니다. 그러나 다음과 같은 멤버 함수는 다음과 같습니다

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

이 대신 간단한 TreeIterMaybe TreeIter 걸립니다. 문서에 왜 또는 Nothing의 인수가 사용되는지는 알 수 없습니다.

질문 :

  1. 왜 인수 형식의 변화?

  2. treeModelIfaceIterChilren iface Nothing은 무엇을 반환해야합니까?

답변

2

나는 TreeModelIface 인터페이스를 사용하기 때문에 그것은 언젠가이었다,하지만 난 제대로 기억한다면, 모든 루트 (또는 최상위) 트리의 노드와 관련이있다. 따라서 부모가 없으므로 treeModelIfaceIterChilren iface Nothing을 검색하는 데 사용됩니다. 형제를 반복 할 때 이것은 treeModelIfaceIterNext으로 문제가되지 않습니다. 즉, 전체 트리를 가로 지르려면 treeModelIfaceIterChilren iface Nothing이 출발점이며, treeModelIfaceIterNexttreeModelIfaceIterChilren (Just 값)을 연속적으로 호출합니다.