簡體   English   中英

GType的映射函數將類型轉換為IO字符串

[英]Map of GType to function transforming a type to an IO String

此映射位於GType和將該GType的實例轉換為IO String的函數之間。 我正在創建一個函數,它接受一個元素並獲取該元素的字符串表示。

mapping =
    [ (Types.gTypeHTMLSourceElement, HTMLSourceElement.getSrc   )
    , (Types.gTypeHTMLObjectElement, HTMLObjectElement.getData  )
    , (Types.gTypeHTMLTimeElement  , HTMLTimeElement.getDateTime)
    , (Types.gTypeHTMLElement      , HTMLElement.getInnerText   )
    , ...
    ]

給出了這個錯誤:

Couldn't match type ‘HTMLObjectElement’ with ‘HTMLSourceElement’

我正在使用ghcjs-dom。 如何在沒有錯誤的情況下編譯此代碼? 我是否以正確的方式解決問題?

如果有人能夠提出比Alec的答案更好的答案,我會接受他們的回答。

我認為解決問題的正確方法是只使用一個toString函數來執行基於GType的分支。

toString :: GObjectClass obj => obj -> IO String
toString obj | obj `isA` gTypeHTMLSourceElement = getSrc . castToHTMLSourceElement
             | obj `isA` gTypeHTMLObjectElement = getData . castToHTMLObjectElement
             | obj `isA` gTypeHTMLTimeElement = getDateTime . castToHTMLTimeElement
             | obj `isA` gTypeHTMLElement = getInnerText . castToHTMLElement
             | ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM