haskell - 如何从 Haskell 的 SDL 绑定中的 RenderConfig 中提取值
问题描述
这可能是初学者的错误,因为这是我第一次“真正”尝试使用 Haskell。
我的相关代码片段如下所示:
import SDL (RendererConfig, RendererType(SoftwareRenderer), defaultRenderer)
defaultRendererType :: RendererType
defaultRendererType = case defaultRenderer of
RendererConfig rt _ -> rt
值得注意的是, ghc 并没有抱怨 的导入RendererConfig
,这让我觉得我用错了。
看起来它的来源RendererConfig
只有两个参数,所以我不确定为什么匹配在 case 表达式中不起作用。
data RendererConfig = RendererConfig
{ rendererType :: RendererType
-- ^ The renderer's acceleration mode
, rendererTargetTexture :: Bool
-- ^ The renderer supports rendering to texture
} deriving (Data, Eq, Generic, Ord, Read, Show, Typeable)
编辑
我得到的错误信息:
Main.hs:47:3: error:
Not in scope: data constructor `RendererConfig'
Perhaps you want to add `RendererConfig' to the import list
in the import of `SDL' (app/Main.hs:10:1-97).
|
47 | RendererConfig rt _ -> rt
| ^^^^^^^^^^^^^^
解决方案
有人向我指出RendererConfig
没有导出的构造函数。但是,由于它确实派生Show
,因此在正确导入后,我仍然可以得到我想要的,而且更简单rendererType(defaultRenderer)
:
推荐阅读
- c# - 在 DataGridView 中显示 WebServe 的 xml 结果
- scala - Spark Scala:使用 $ 的符号的功能差异?
- python - 使用 Python 提取页面源
- kubernetes - kubectl -f 缩写
- c# - 比较 typeof(Dictionary) 时出错,因为 Dictionary`2
- huawei-mobile-services - 华为 AdsKit `AdParam.Builder` 的允许值是多少?
- python - 检查目标时出错:预期 x3 有 2 个维度,但得到了形状为 (30, 1, 4) 的数组
- build - 为什么要使用`config.status --recheck`?– 因为它不会*保存*任何东西
- c - C: 处理案例...else
- r - 所有可能的变量组合的总结