假设我有一个这样的模块:
module Foo
let x = 1
let y = 2
Run Code Online (Sandbox Code Playgroud)
现在我可以像这样使用这个模块:
module Bar
let z = Foo.x + Foo.y
Run Code Online (Sandbox Code Playgroud)
是否可以导入定义Foo是否可以导入不需要限定
就像是:
module Bar
import x from Foo // Not real code
let z = x + Foo.y // x need not be qualified
Run Code Online (Sandbox Code Playgroud)
请注意,我不想导入所有内容Foo
不能,没有直接与 ES6import { ... } from 'Module'语法等效的 F#。F# 支持将代码组织到模块和命名空间中,但模块和命名空间都是通过关键字完整“导入”的open。正如注释中提到的,您可以使用本地绑定来简化对值(例如let exchangeRange = Conversions.Currency.UsdToCadExchangeRate)的限定访问,或使用类型别名来简化对类型(type Converter = Conversions.Currency.CurrencyConverter)的限定访问。
此外,模块可以使用[<AutoOpen>]属性进行标记,以使其内容无需限定访问即可访问,也可以[<RequireQualifiedAccess>]使用属性进行标记,以使其内容仅在限定时可访问,即使在open表达式中引用了该模块也是如此。
请参阅这篇 MSDN 文章以获取更多信息。
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |