Sdílet prostřednictvím


Deklarace importu: Klíčové slovo open (F#)

Dovozní prohlášení Určuje modul nebo jehož prvky lze odkazovat bez použití úplného názvu oboru názvů.

open module-or-namespace-name

Poznámky

Kód odkazující pomocí plně kvalifikovaná cesta oboru názvů nebo modul vždy vytvořit kód, který je zápis, čtení a udržovat pevný.Místo toho můžete použít open klíčové slovo pro často používané moduly a obory názvů při odkazu členem tohoto modulu nebo obor názvů krátkých názvu lze použít namísto úplného názvu.This keyword is similar to the using keyword in C#, usingnamespace in Visual C++, and Imports in Visual Basic.

Modul nebo podle oboru názvů, musí být ve stejném projektu nebo Odkazovaný projekt nebo sestavení.Pokud není, můžete přidat odkaz na projekt nebo použít -reference příkaz-možnost řádek (nebo jeho zkratkou, -r).Další informace naleznete v tématu Možnosti kompilátoru (F#).

Dovozní prohlášení zpřístupňuje názvy v kódu, který následuje prohlášení až do konce ohraničujícím oboru názvů, modulu nebo souboru.

Při použití více dovozních prohlášení by se zobrazit na samostatných řádcích.

Následující kód ukazuje použití open klíčové slovo pro zjednodušení kódu.

// Without the import declaration, you must include the full 
// path to .NET Framework namespaces such as System.IO. 
let writeToFile1 filename (text: string) =
  let stream1 = new System.IO.FileStream(filename, System.IO.FileMode.Create)
  let writer = new System.IO.StreamWriter(stream1)
  writer.WriteLine(text)

// Open a .NET Framework namespace. 
open System.IO

// Now you do not have to include the full paths. 
let writeToFile2 filename (text: string) =
  let stream1 = new FileStream(filename, FileMode.Create)
  let writer = new StreamWriter(stream1)
  writer.WriteLine(text)

writeToFile2 "file1.txt" "Testing..."

Kompilátor F# není generuje chyba nebo varování při nejasnosti při stejné jméno vyskytuje ve více otevřít modul nebo oboru názvů.Dojde-li k nejasnosti, F# dává přednost naposledy otevřených modulu nebo oboru názvů.Například v následujícím kódu empty znamená Seq.empty, i když empty je umístěn v obou List a Seq moduly.

open List
open Seq
printfn "%A" empty

Proto buďte opatrní při otevření moduly nebo obory názvů jako List nebo Seq , obsahující členy, které mají stejné názvy; místo toho raději kvalifikované názvy.Neměli byste jakékoliv situaci, ve které je závislá na pořadí dovozních prohlášení kód.

Obory názvů, které jsou ve výchozím nastavení

V F# kód, aby se implicitně otevřena bez nutnosti explicitní dovozním prohlášení tak často používají některé obory názvů.Následující tabulka zobrazuje obory názvů, které jsou ve výchozím nastavení.

Obor názvů

Description

Microsoft.FSharp.Core

Obsahuje základní definice typu F# pro předdefinované typy jako int a float.

Microsoft.FSharp.Core.Operators

Obsahuje základní aritmetické operace, jako například + a *.

Microsoft.FSharp.Collections

Například obsahuje třídy neměnná kolekce List a Array.

Microsoft.FSharp.Control

Obsahuje typy pro ovládací prvky, například lazy hodnocení a asynchronní pracovní postupy.

Microsoft.FSharp.Text

Obsahuje funkce pro formátovaný IO, například printf funkce.

Atribut AutoOpen

Můžete aplikovat AutoOpen Chcete-li automaticky otevřít obor názvů nebo modulu při sestavení odkazuje atribut na sestavení.Můžete také použít AutoOpen atribut modulu automaticky otevřít modulu při otevření modulu nadřazené nebo oboru názvů.Další informace naleznete v tématu Core.AutoOpenAttribute – třída (F#).

Atribut RequireQualifiedAccess

Některé moduly, záznamy nebo typy unie může zadat atribut RequireQualifiedAccess.Při odkazu na prvky těchto modulů, záznamy nebo svazů, musíte použít úplný název bez ohledu na to, zda obsahují dovozní prohlášení.Používáte-li tento atribut strategicky na typy, které definují běžně použité názvy, pomoci předejít Kolize názvů a tím kód odolnější změn v knihovnách.Další informace naleznete v tématu Core.RequireQualifiedAccessAttribute – třída (F#).

Viz také

Referenční dokumentace

Obory názvů (F#)

Moduly (F#)

Další zdroje

Referenční dokumentace jazyka F#