Elm构造类型
示例
该typealias关键字组合给出了一个新的名称为一个类型,但type在隔离关键字声明一个新类型。让我们研究这些类型中最基本的一种:Maybe
type Maybe a
= Just a
| Nothing首先要注意的是,该Maybe类型的类型变量声明为a。要注意的第二件事是竖线字符|,它表示“或”。换句话说,类型的东西Maybea是无论是Justa或Nothing。
当你写上面的代码,Just并Nothing进入范围,因为价值的构造,并Maybe进入活动范围的类型构造。这些是他们的签名:
Just : a -> Maybe a Nothing : Maybe a Maybe : a -> Maybe a -- this can only be used in type signatures
由于type变量a,任何类型都可以“包装在”该Maybe类型的内部。所以MaybeInt,Maybe(ListString)或者Maybe(Maybe(ListHtml)),都是有效的类型。type使用case表达式解构任何值时,必须考虑该类型的每个可能实例。对于type的值Maybea,必须同时考虑Justa大小写和Nothing大小写:
thing : Maybe Int
thing =
Just 3
blah : Int
blah =
case thing of
Just n ->
n
Nothing ->
42
-- blah = 3尝试Nothing在case表达式中不包含子句的情况下编写以上代码:它不会编译。这就是使Maybe类型构造函数成为表示可能不存在的值的绝佳模式的原因,因为它迫使您处理值何时为的逻辑Nothing。
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法