看起来像一个非常基本的问题,但如果我有:
data LogLevel = Info | Warning | Error Int
x = Info
y = Error 13
Run Code Online (Sandbox Code Playgroud)
我可以写
if (x==Info)
Run Code Online (Sandbox Code Playgroud)
但是我如何为类型Error编写测试?
Error不是一种类型; 它是一个数据构造函数.您可以使用模式匹配来区分各种类型的值LogLevel.
case x of
Info -> ...
Warning -> ...
Error n -> ...
Run Code Online (Sandbox Code Playgroud)
在这里,您不仅会根据值x获取正确的"分支" ,还会在该模式匹配时获得与Error(in n)关联的特定整数.