Могу ли я импортировать только одно объявление из модуля F #? - PullRequest
0 голосов
/ 01 июня 2018

Предположим, у меня есть такой модуль:

module Foo

let x = 1
let y = 2

Теперь я могу использовать этот модуль следующим образом:

module Bar

let z = Foo.x + Foo.y

Можно ли импортировать определение из Foo, напримерчто это не нужно квалифицировать?

Что-то вроде:

module Bar

import x from Foo // Not real code

let z = x + Foo.y // x need not be qualified

Обратите внимание, что я не хочу импортировать все из Foo

1 Ответ

0 голосов
/ 01 июня 2018

Вы не можете, нет прямого F # эквивалента синтаксису ES6 import { ... } from 'Module'.F # поддерживает организацию кода как в модулях, так и в пространствах имен, но модули и пространства имен «импортируются» полностью с ключевым словом open.Как упомянуто в комментариях, вы можете использовать локальные привязки для упрощения квалифицированного доступа к значениям (например, let exchangeRange = Conversions.Currency.UsdToCadExchangeRate) или псевдонимы типов для упрощения квалифицированного доступа к типам (type Converter = Conversions.Currency.CurrencyConverter).

Кроме того, модули могутпомечать атрибутом [<AutoOpen>], чтобы сделать их содержимое доступным без квалифицированного доступа, или атрибутом [<RequireQualifiedAccess>], чтобы сделать их содержимое доступным только , если он квалифицирован, даже если на модуль ссылаются в выражении open.

Подробнее см. в этой статье MSDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...