美文网首页
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