小编Shi*_*vel的帖子

展开F#单例区分联合元组类型

我们可以像type Address = Address of string使用展开功能一样展开类型

let unwrapAddress (Address a) = a
let addr = Address "sdf"
let str = unwrapAddress addr
Run Code Online (Sandbox Code Playgroud)

所以str类型string,但如果有这样的类型方法将无法正常工作:

type Composite = Composite of integer:int * someStr:string
let unwrap (Composite c) = c
Run Code Online (Sandbox Code Playgroud)

会产生错误

let unwrap (Composite c) = c;;
------------^^^^^^^^^^^
error FS0019: This constructor is applied to 1 argument(s) but expects 2
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式将复合类型解包为一个简单的元组吗?

f# discriminated-union namedtuple

8
推荐指数
3
解决办法
1509
查看次数

标签 统计

discriminated-union ×1

f# ×1

namedtuple ×1