Alma bildirimi: Açık anahtar (F#)
Bir bildirimi almak modül veya öğeleri tam adı kullanmadan başvuru ad belirtir.
open module-or-namespace-name
Notlar
Her zaman tam ad veya modülü yolu kullanarak koduna başvurulmasını yazma, okuma ve korumak sabit kod oluşturabilirsiniz. Bunun yerine kullanmak open anahtar sözcüğünü sık kullanılan modüller ve ad o modül veya ad alanı üye başvuru yaptığınızda, tam adı yerine kısa form adı kullanın böylece. This keyword is similar to the using keyword in C#, usingnamespace in Visual C++, and Imports in Visual Basic.
Aynı proje veya başvurulan proje veya derleme modül veya sağlanan ad olmalıdır. Değilse, proje başvuru ekleyebilir, veya kullanmak -reference komut-satır seçeneği (veya kısaltmasıysa, -r). Daha fazla bilgi için bkz. Derleme Seçenekleri (F#).
İmport bildirimini adlarını kapsayan ad, modül veya dosya sonuna kadar bildirimi aşağıdaki kod kullanılabilir hale getirir.
Birden çok alma bildirimi kullandığınızda, ayrı satırlara görüntülenmesi gerekir.
Aşağıdaki kod kullanımını gösterir open kodu basitleştirmek için anahtar sözcük.
// 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..."
Ambiguities aynı adı birden fazla açık modülü veya ad oluştuğunda ortaya çıktığında F# derleyici bir hata veya uyarı yayma değil. F# ambiguities ortaya çıktığında tercih daha son açılan modül ya da ad sağlar. Örneğin, aşağıdaki kodda, empty anlamına gelir Seq.emptybile, empty ikisinde bulunan List ve Seq modüller.
open List
open Seq
printfn "%A" empty
Modülleri veya ad alanları gibi açtığınızda, bu nedenle dikkatli olun List veya Seq ; aynı adlara sahip üyeleri içerir Bunun yerine, tam adları kullanmayı düşünün. Herhangi bir durum kodu alma bildirimlerini sipariş bağımlı olduğu kaçınmalısınız.
Varsayılan olarak açık olan ad alanları
Bazı ad, bunlar açıkça alma bildirimi gerek olmadan dolaylı olarak açılırlar F# kodundaki sık kullanılır. Aşağıdaki tabloda varsayılan olarak açık olan ad alanları gösterir.
Ad uzayı |
Description |
---|---|
Microsoft.FSharp.Core |
Temel F# tür tanımları için yerleşik türleri içerir int ve float. |
Microsoft.FSharp.Core.Operators |
Gibi temel aritmetik işlemleri içeren + ve *. |
Microsoft.FSharp.Collections |
Immutable koleksiyon sýnýflarýný içerir List ve Array. |
Microsoft.FSharp.Control |
Denetim yapıları gibi tembel değerlendirme ve zaman uyumsuz iş türlerini içerir. |
Microsoft.FSharp.Text |
Biçimlendirilmiş IO için gibi işlevleri içeren printf işlevi. |
AutoOpen özniteliği
Uygulayabileceğiniz AutoOpen derlemeye başvuruda bulunduğunda otomatik olarak bir ad veya modülü açmak isterseniz, bir derleme özniteliği. Ayrıca uygulama AutoOpen özniteliği bir modüle üst modül veya ad alanı açıldığında otomatik olarak bu modül açmak için. Daha fazla bilgi için bkz. Core.AutoOpenAttribute Sınıfı (F#).
RequireQualifiedAccess özniteliği
Bazı modüller, kayıtlar veya birleþim türleri RequireQualifiedAccess öznitelik belirtebilir. Bu modüller, kayıtları ya da sendikalar öğeleri başvuru yaptığınızda, import bildiriminin dahil olup olmadığına bakılmaksızın nitelenmiþ bir ad kullanmanız gerekir. Bu öznitelik stratejik üzerinde kullanırsanız, yaygın olarak tanımlayan türleri kullanılan adları, ad çakışmaları önlemek ve böylece kod daha esnek kitaplıklarında değişiklikler yapmak yardımcı. Daha fazla bilgi için bkz. Core.RequireQualifiedAccessAttribute Sınıfı (F#).