Obory názvů (F#)
Obor názvů umožňuje uspořádat kód do oblastí související funkce také připojit název seskupení prvků programu.
namespace [parent-namespaces.]identifier
Poznámky
Pokud chcete kód umístit do oboru názvů, prvního prohlášení v souboru musíte deklarovat obor názvů.Obsah souboru celý stát součástí oboru názvů.
Obory názvů nemůže obsahovat přímo hodnoty a funkce.Hodnoty a funkce musí být součástí modulů a modulů, které jsou zahrnuty v oborech názvů.Obory názvů může obsahovat typy modulů.
Obory názvů lze deklarovat explicitně pomocí klíčového slova oboru názvů nebo implicitně při deklarování modulu.Explicitně deklarovat obor názvů, použijte klíčové slovo obor názvů a název oboru názvů.Následující příklad zobrazuje kód souboru, který deklaruje obor názvů zařízení s typem a modul v tomto oboru názvů.
namespace Widgets
type MyWidget1 =
member this.WidgetName = "Widget1"
module WidgetsModule =
let widgetName = "Widget2"
Pokud jeden modul celý obsah souboru, můžete také deklarovat obory názvů implicitně pomocí module klíčové slovo a poskytuje nový název oboru názvů v modulu plně kvalifikovaný název.Následující příklad zobrazuje kód souboru, který deklaruje obor názvů Widgets a modul WidgetsModule, který obsahuje funkci.
module Widgets.WidgetModule
let widgetFunction x y =
printfn "%A %A" x y
Následující kód je ekvivalentní předcházejícím kódu, ale modul je místní modul prohlášení.V takovém případě obor názvů, musí být na samostatném řádku.
namespace Widgets
module WidgetModule =
let widgetFunction x y =
printfn "%A %A" x y
Pokud více než jeden modul je nutná stejný soubor v jedné nebo více oborů názvů, je nutné použít místní modul prohlášení.Při použití modulu Místní prohlášení v prohlášení modul nelze použít kvalifikovaný oboru názvů.Následující kód ukazuje soubor, který má deklarace oboru názvů a dvě místní modul prohlášení.V tomto případě jsou moduly obsažené přímo v oboru názvů; neexistuje žádný modul implicitně vytvořené, který má stejný název jako soubor.Jakékoli jiné kódu v souboru, například do vazbu, je v oboru názvů, ale není ve vnitřní modulů, takže je třeba kvalifikovat modul členské widgetFunction pomocí název modulu.
namespace Widgets
module WidgetModule1 =
let widgetFunction x y =
printfn "Module1 %A %A" x y
module WidgetModule2 =
let widgetFunction x y =
printfn "Module2 %A %A" x y
module useWidgets =
do
WidgetModule1.widgetFunction 10 20
WidgetModule2.widgetFunction 5 6
Výstup tohoto příkladu je takto.
Module1 10 20
Module2 5 6
Další informace naleznete v tématu Moduly (F#).
Vnořené obory názvů
Při vytváření vnořených oboru názvů, musí plně využívat.Jinak vytvořte nový obor názvů nejvyšší úrovně.Odsazení je ignorována deklarace oboru názvů.
Následující příklad ukazuje, jak deklarovat vnořené oboru názvů.
namespace Outer
// Full name: Outer.MyClass
type MyClass() =
member this.X(x) = x + 1
// Fully qualify any nested namespaces.
namespace Outer.Inner
// Full name: Outer.Inner.MyClass
type MyClass() =
member this.Prop1 = "X"
Obory názvů v souborech a sestavení
Obory názvů může zahrnovat více souborů v jednom projektu nebo kompilace.Termín fragmentu oboru názvů popisuje část oboru názvů, který je obsažen v jednom souboru.Obory názvů může také zahrnovat více sestavení.Například System obor názvů zahrnuje celé .NET Framework, který zahrnuje mnoho sestavení a obsahuje mnoho vnořených obory názvů.
Obor názvů Global
Použití předdefinovaných oboru názvů global umístit názvy.NET nejvyšší úrovně oboru názvů.
namespace global
type SomeType() =
member this.SomeMember = 0
Můžete také globální odkazovat nejvyšší úrovni.NET názvů, například vyřešit konflikty názvů s jinými obory názvů.
global.System.Console.WriteLine("Hello World!")