gpt4 book ai didi

f# - 引用被本地模块类型遮蔽的顶级类型

转载 作者:行者123 更新时间:2023-12-04 11:01:43 25 4
gpt4 key购买 nike

F# 的新手。享受它。

我试图从嵌套模块中引用我在 F# 模块的顶层声明的类型。

在这段代码中,我想要 o1引用顶级Order类型:

module Order

type Id = Id of int64
module Id = let value (Id i) = i // allow us to unpack the int64

type Order = {Id : Id}

module DTO =

type Order = {Id : int64}

let DomainToDTO (o1 : Order) : Order = { Order.Id = Id.value(o1.Id) }

这有效:
module Order

type Id = Id of int64
module Id = let value (Id i) = i // allow us to unpack the

type Order1 = {Id : Id}

module DTO =

type Order2 = {Id : int64}

let DomainToDTO (o1 : Order1) : Order2 = { Order2.Id = Id.value(o1.Id) }

是否可以告诉编译器 DomainToDTO 函数期望接收顶级类型,而不给本地类型一个不同的名称?

IE。我希望代码进一步向下引用“Order”或“DTO.Order”?

谢谢您的帮助

罗兰

最佳答案

一种替代方法是在子模块中隐藏类型之前对类型进行别名:

module Order

type Id = Id of int64
module Id = let value (Id i) = i // allow us to unpack the int64

type Order = {Id : Id}

module DTO =
type ParentOrder = Order
type Order = {Id : int64}

let DomainToDTO (o1 : ParentOrder) : Order = { Order.Id = Id.value(o1.Id) }

关于f# - 引用被本地模块类型遮蔽的顶级类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com