1

data Rectangle = Rectangle Int Int Int Int (gtk2hs-doc へのリンク) から
「幅」または「高さ」の値を取得する方法がわかりませんRectangle
データ型の名前のないフィールド値を取得する方法は? ありがとう。


何のために:

ウィジェットのサイズを取得したいので、次のように試しました:

main = do
    initGUI
    -- . . . 
    widget <- drawingAreaNew
    canvasArea <- newIORef $ Rectangle 0 0 defaultWidth defaultHeight
    widget `onExpose` updateCanvas widget (liftIO (readIORef canvasArea) >>= render)
    onSizeAllocate widget $ updateSize canvasArea
    -- . . .

updateSize :: IORef a -> a -> IO ()
updateSize old new = writeIORef old new

そして、値を取得する方法がわからないことに気付きました...

4

2 に答える 2

1

Rectangle多少異なると宣言することをお勧めします。

data Rectangle = Rectangle { left, top, width, height :: Int }

次に、rが の場合、その幅を取得するようにRectangle記述できます。width r

Rectangle 100 200 300 400を作成するために書くこともできますRectangle

于 2013-10-31T21:17:38.413 に答える