gpt4 book ai didi

f# - 我可以选择性地打开一个模块,以便我可以不加限定地引用它的一些值吗?

转载 作者:行者123 更新时间:2023-12-04 23:09:52 26 4
gpt4 key购买 nike

在 Haskell 中,我使用 Data.Map模块及其同名的主要类型 Data.Map.Map , 像这样:

import Data.Map (Map)
import qualified Data.Map as M

在 F# 中,我想用我的 Item 做类似的事情模块,其中包含一个同名类型:
module Item

type Item = { Description: string }
let empty = { Description = "" }

我找不到使用此模块合格和不合格类型的方法。我可以从另一个模块使用这个模块并像这样输入吗?
let getItem (): Item = Item.empty

编辑:

从客户端模块添加类型别名让我可以使用 Item具有资格的模块和 Item没有资格的类型,但是还有更好的方法吗?
type Item = Item.Item

最佳答案

我认为从模块中仅导入单个类型的唯一方法是使用类型别名(正如您已经指出的)。要获得对模块成员的合格访问权限(使用不同的名称),您可以使用模块别名:

type Item = Item.Item // Type-alias for type(s) from module
module I = Item // Module-alias for accessing members

// Now you can write:
let getItem() : Item = I.empty

我认为没有任何方法可以选择性地从模块中导入成员(如在 Haskell 中),所以这可能是最好的选择。

关于f# - 我可以选择性地打开一个模块,以便我可以不加限定地引用它的一些值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156523/

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