Aracılığıyla paylaş


Modüller (F#)

F# dili, bağlamında bir modülü F# kodu, değerler, türleri ve F# programında işlevi değerleri gibi bir gruplandırmasıdır. Gruplandırma modüllerinde kodu ilgili kod bir arada tutmak yardımcı olur ve programınızda ad çakışmalarını önlemeye yardımcı olur.

// Top-level module declaration. 
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
   declarations

Notlar

Bir F# modül F# kod yapýlarýný türleri, değerleri, işlevi değerleri ve kod gibi bir gruplandırmasıdır do bağlar. Yalnızca statik üyeleri olan bir ortak dil çalışma zamanı (clr) sınıfı uygulanır. Dosyanın tamamını modülünde dahil edilir, modülü Bildiriler, iki tür vardır: üst düzey Modülü bildirim ve yerel modül bildirimi. Bir üst düzey modülü bildirimi dosyanın tamamını modülünde içerir. Bir üst düzey modülü bildirimi yalnızca dosyadaki ilk bildirimi olarak görünebilir.

İsteğe bağlı üst düzey modülü bildiriminin sözdizimi qualified-namespace modülü içeren iç içe ad alanı adları dizisidir. Nitelikli ad önceden bildirilmesi gerekmez.

Üst düzey bir modülde bildirimleri girinti gerekmez. Yerel modüllerindeki tüm bildirimler girintilemek vardır. Yerel modül bildiriminde Modülü bildirim altında girintili bildirimleri modülü bir parçasıdır.

Kod dosyasının üst düzey modülü bildiriminde ya da bir ad alaný bildirimi ile başlamıyorsa, herhangi bir yerel modülleri de içinde olmak üzere dosyanın tüm içeriğini ilk harfini büyük harfe dönüştürülmesi ile uzantısı olmadan bir dosyayla aynı ada sahip bir örtük olarak oluşturulan en üst düzey modülü bir parçası haline gelir. Örneğin, aşağıdaki dosya düşünün.

// In the file program.fs.
let x = 40

Bu şekilde yazılmış gibi bu dosyayı derlenmiş:

module Program
let x = 40

Birden çok modülü bir dosyanız varsa, her modül için bir yerel modül bildirimi kullanmanız gerekir. Kapsayan bir ad alanını bildirilirse, bu modülleri kapsayan ad alanının bir parçasıdır. Kapsayan bir ad alanını bildirilmedi, modüller dolaylı olarak oluşturulan en üst düzey modülü bir parçası haline gelir. Aşağıdaki kod örneği, birden çok modülü içeren bir kod dosyasını göstermektedir. Derleyici örtülü olarak adında bir üst düzey modülü oluşturur Multiplemodules, ve MyModule1 ve MyModule2 , üst düzey modülü iç içe geçmiş.

// In the file multiplemodules.fs.
// MyModule1
module MyModule1 =
    // Indent all program elements within modules that are declared with an equal sign.
    let module1Value = 100

    let module1Function x =
        x + 10

// MyModule2
module MyModule2 =

    let module2Value = 121

    // Use a qualified name to access the function.
    // from MyModule1.
    let module2Function x =
        x * (MyModule1.module1Function module2Value)

Birden çok dosyayı bir proje veya tek bir derleme veya kitaplık oluşturuluyorsa, bir ad alaný bildirimi ya da dosyanın en üstündeki modülü bildirimi eklemeniz gerekir. F# derleyicisi yalnızca bir modül adı örtük bir proje ya da derleme komut satırında yalnızca bir dosya olduğunda ve bir uygulama oluşturuyorsanız belirler.

The accessibility-modifier can be one of the following: public, private, internal. Daha fazla bilgi için bkz. Erişim denetimi (F#). Varsayılan geneldir.

Başvuru kodu modülleri

İşlevler, türlerini ve değerlerini başka bir modülden başvuru yaptığınızda, nitelenmiþ bir ad kullanmak veya modülü açmak gerekir. Nitelenmiþ bir ad kullanırsanız, ad, modül ve istediğiniz program öğesi için tanımlayıcı belirtmeniz gerekir. Siz yolu ile her bir parçasını bir nokta (.) gibi ayırın.

Namespace1.Namespace2.ModuleName.Identifier

Modül veya aşağıdakilerden birini veya birkaçını kodu basitleştirmek için ad alanı açabilirsiniz. Açılış ad ve modülleri hakkında daha fazla bilgi için bkz: Alma bildirimi: Açık anahtar (F#).

Aşağıdaki kod örneği, dosya sonuna kadar tüm kodu içeren bir üst düzey modülü gösterir.

module Arithmetic

let add x y =
    x + y

let sub x y =
    x - y

Başka bir dosyadan bir projede bu kodu kullanmak için ya da nitelenmiþ adlar kullanın veya işlevleri kullanmadan önce aşağıdaki örneklerde gösterildiği gibi modülü açın.

// Fully qualify the function name.
let result1 = Arithmetic.add 5 9
// Open the module.
open Arithmetic
let result2 = add 5 9

İç içe geçmiş modülleri

Modüller iç içe olabilir. İç modülleri iç modülleri, değil yeni modülleri olduğunu göstermek için dış modül bildirimleri tutulmuş girintilenmelidir. Örneğin, aşağıdaki iki örnek karşılaştırın. Modül Z aşağıdaki kodda iç modülüdür.

module Y =
    let x = 1 

    module Z =
        let z = 5

Ancak modül Z modülü bir eşi olan Y aşağıdaki kodda.

module Y =
    let x = 1 

module Z =
    let z = 5

Modül Z da bir kardeş modüle aşağıdaki kodu, bu modüldeki diğer bildirimleri kadar girinti uygulanmamış çünkü Y.

module Y =
        let x = 1

    module Z =
        let z = 5

Son olarak, dış modülü yok bildirimleri varsa ve başka bir modül bildirimi hemen ardından, yeni Modülü bildirim bir iç modül olarak kabul edilir, ancak derleyici ikinci modülü tanımı ilk aşamaya girinti uygulanmamış, uyarır.

// This code produces a warning, but treats Z as a inner module.
module Y =
module Z =
    let z = 5

Uyarı ortadan kaldırmak için iç modül girintilendirir.

module Y =
    module Z =
        let z = 5

Tek dış modülde bulunan bir dosyada tüm kod ve iç modül istiyorsanız, eşittir işaretinin dış modülü gerektirmez ve dış modülünde gidecek herhangi bir iç modül bildirimleri de dahil olmak üzere, bildirimleri girintili gerekmez. Bildirimleri iç modül bildirimleri içinde girintili olmak zorunda. Bu durumda aşağıdaki kodu gösterilir.

// The top-level module declaration can be omitted if the file is named
// TopLevel.fs or topLevel.fs, and the file is the only file in an
// application.
module TopLevel

let topLevelX = 5

module Inner1 =
    let inner1X = 1
module Inner2 =
    let inner2X = 5

Ayrıca bkz.

Başvuru

Ad alanlarını (F#)

Diğer Kaynaklar

F# dil başvurusu