2010-05-11 4 views
0

이 코드가 한 줄씩 무엇을 설명해 줄 수 있습니까?하스켈 : wxHaskell의 격자

선언과 함께 첫 줄을 어떻게 이해할 수 있습니까? 그것은 무엇을 의미합니까 : [Prop (Grid())]? wxHaskell에 도움

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 
+0

[Markdown formatting reference] (http://stackoverflow.com/editing-help)를 읽고 코드를 다시 읽기 쉽게 읽을 수 있도록하십시오. –

답변

4

에 대한

덕분에, 컨트롤 읽거나 변경할 수있는 속성을 첨부했습니다. 스탠자 [Prop (Grid())]는 "모든 그리드 유형의 특성 목록"으로 이해할 수 있습니다.

이것은 빌드 된 wxWidgets 라이브러리가 객체 지향이라는 사실을 처리하는 wxHaskell의 방식입니다. Grid()는 실제로 Grid가 파생 된 상속 계층 구조의 모든 것을 의미합니다. 즉, Grid, ScrolledWindow, Panel, Window, EvtHandler, wxObject (http://wxhaskell.sourceforge.net/doc/Graphics-UI-WXCore-WxcClassTypes.html#204에서 시작하면 이것을 따라갈 수 있습니다.)

컨트롤 (예 : ListCtrl)의 문서는 속성 및 인스턴스 세트가있는 것으로보고됩니다. 기본적으로 Grid의 계층 구조에 적용되는 것을 사용할 수 있습니다. 예를 들어, 그리드 ScrolledWindow에서 유래, 그래서 당신은 사용할 수 있습니다

  • 는 scrollRate 속성 컬러 클래스 예를 들어,의
  • 속성 BGCOLOR, 색상
  • 다음과 같이

당신은 이러한 속성을 사용하여, 예를 들어, 라인별로

g <- gridCtrl parent [color := red, bgcolor := green, scrollRate := 41] 
... 
set g [color := blue] 

라인, 코드 같은 것을 읽어 다음

  • 공급 된 속성 (소품)
  • 과를 사용하여 initialWindow (창 를 입력 할 id 및 초기 플래그)를 호출 할 때는 floowing wrapped 순서 기능 :
  • gridCreate 새로운 그리드 인스턴스를 사용하여 새 그리드 인스턴스
  • 을 만들 수는 선택 0 행 0 열 및 아무것도 내부의 격자를 설정합니다.
  • 그리드에 호출자에 의해 공급되는 특성 (소품)을 적용 (예를 들면 등을 설정 스타일 데이터를 입력)

읽기 힘든 코드를 만드는 부분은 피드 2 함수이다 , 그리고 코드가 '$'스타일로 작성되어 feed2에 올바른 매개 변수를 제공한다는 사실. 내 약간-손을 흔들며 설명은 위의 충분하지만, 당신이 세부 사항을 이해하려면, 단지

feed2 x y f = f x y 

다음 괄호와 '$'애플리케이션을 대체 반전 기능 응용 프로그램을 피드 2로 구성되어 있음을 이해해야한다. 이것은 귀엽지는 않지만 읽기가 쉽습니다.

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)))