[英]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.