美文网首页
Datatype绑定(Datatype Bingdings)

Datatype绑定(Datatype Bingdings)

作者: christ_yang | 来源:发表于2020-06-22 22:38 被阅读0次

创建

通过下面简单的例子来学习datatype绑定:

datatype mytype = TwoInts of int * int
                | Str of string
                | Pizza
  • 上面代码定义了一个新类型:其值有int * intstring或无
  • 任何值都会被“标记”上信息,让我们能知道它是哪种变体:这些“标记”,即TwoInt、Str、Pizza,我们称为“构造器(constructors)”
  • 使用不同的构造器去标记同一类型的底层数据是一种常见的做法
    参考:标记/签联合类型

简而言之:

  • 有了一个新类型mytype可以使用
  • 三个构造器:TwoInt、Str、Pizza

构造器:

  1. 一个可以创建新类型值的函数(函数:TwoInt : int * int -> mytype;函数:Str : string -> mytype
  2. 一个新类型的值(值:Pizza

使用

获取mytype的值:

  1. 它是哪一个变体(即哪个构造器创建了该值)
  2. 解析值(如果它有任何值)

其他“one-of”类型:
list、option是使用函数来解析其含有的值

  • nullisSome确定变体
  • hd、tl、valOf解析值(在错误的变体上使用就抛出异常)

所以我们可以做同样的事,例如:

  • isTwoInts、isStr、and isPizza,类型:mytype -> bool
  • getTwoInts,类型:mytype -> int * int

但是ML并没有采取这种实现方式,它使用了更好的解决办法:Case表达式

相关文章

网友评论

      本文标题:Datatype绑定(Datatype Bingdings)

      本文链接:https://www.haomeiwen.com/subject/srbffktx.html