在Haskell中,我使用Data.Map模块及其相同名称的主要类型Data.Map.Map,如下所示:
import Data.Map (Map)
import qualified Data.Map as M
Run Code Online (Sandbox Code Playgroud)
在F#中,我想做一些与我的Item模块类似的东西,它包含一个相同名称的类型:
module Item
type Item = { Description: string }
let empty = { Description = "" }
Run Code Online (Sandbox Code Playgroud)
我找不到使用此模块的方法合格且类型不合格.我可以使用此模块并从另一个模块中这样输入吗?
let getItem (): Item = Item.empty
Run Code Online (Sandbox Code Playgroud)
编辑:
从客户端模块添加类型别名让我可以使用Item具有资格的模块和Item没有资格的类型,但还有更好的方法吗?
type Item = Item.Item
Run Code Online (Sandbox Code Playgroud)
我认为从模块中仅导入单个类型的唯一方法是使用类型别名(如您所述).要获得对模块成员的限定访问权限(使用其他名称),可以使用模块别名:
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
Run Code Online (Sandbox Code Playgroud)
我认为没有任何方法可以有选择地从模块中导入成员(如在Haskell中),所以这可能是最好的选择.
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |