【问题标题】:F# composition of types. How to instantiate and use.F# 类型的组合。如何实例化和使用。
【发布时间】:2018-11-02 03:28:45
【问题描述】:

我可以像这样创建和实例化简单类型:

type MyStr1 = MyStr1 of string
let myStr1 = MyStr1("aaa")

type MyStr2 = MyStr2 of string
let myStr2 = MyStr2("bbb")

然后我可以将它们组合成第三种类型:

type MyStr3 = MyStr1 -> MyStr2

如何实例化 MyStr3?这个对象将代表什么?有什么用?

【问题讨论】:

    标签: .net types f# type-conversion


    【解决方案1】:

    这是type alias 函数类型:

    type MyStr3 = MyStr1 -> MyStr2
    

    这不是严格意义上的类型,只是你知道的别名:)

    但您可以使用它来创建此别名的值:

    let myFun : MyStr3 =
        fun (MyStr1 str) -> MyStr2 str
    
    let result = myFun myStr1
    printfn "%A" result //prints `MyStr2 "aaa"`
    

    添加: 回答您的评论:

    type MyStr4 = MyStr4 of string
    
    type MyStr3 = MyStr1 -> MyStr2 -> MyStr4
    
    let myFun : MyStr3 = 
        fun (MyStr1 str1) (MyStr2 str2) -> MyStr4 (str1 + str2)
    

    【讨论】:

    • 谢谢!所以 MyStr1 是函数输入参数类型, MyStr2 是输出类型。但是如果我有类似的东西:type MyStr3 = MyStr1 -> MyStr2 -> MyStr4 函数会是什么样子?
    • @Nick 为您的评论添加了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2013-03-09
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多