Aracılığıyla paylaş


İmzalar (F#)

İmza dosyası, bir dizi F# program, türü, ad ve modülleri gibi ortak imzaları hakkında bilgiler içerir. Bu program öğeleri erişilebilirliğini belirtmek için kullanılabilir.

Notlar

Her F# kod dosyası için olabilir bir imza dosyası, kod dosyası olarak ancak .fs yerine uzantısı .fsi ile aynı ada sahip bir dosya olduğu. Doğrudan komut satırından kullanıyorsanız komut satırı derleme imza dosyaları da eklenebilir. İmza dosyalarını ve AVI Dosyalarını Ayrıştırmada Kod arasında ayrım yapmak için kod dosyaları olarak adlandırılır uygulaması dosyaları. Bir projeye imza dosyası ilgilibir kod dosyasý gelmelidir.

İmza dosyası ad alanları, modülleri, türleri ve karşılık gelen uygulama dosyasında üyeleri açıklar. Hangi parçaların belirtmek için bir imza dosyasında bilgi kullanmak karşılık gelen uygulamasında kod dosyası kod uygulama dosyası dışında erişilebilir ve hangi bölümleri uygulama dosyasına iç. Ad alanları, modüller ve uygulama dosyasında bulunan türler kümesini ad alanları, modüller ve imza dosyasında bulunan türleri olmalıdır. Bazı istisnalar bu konuda aksi belirtilmedikçe, imza dosyasında listelenmeyen dil öğeler uygulama dosyası için özel olarak değerlendirilir. İmza dosyası yok, proje ya da komut satırı bulunamazsa, varsayılan erişilebilirlik kullanılır.

Varsayılan erişilebilirlik hakkında daha fazla bilgi için bkz: Erişim denetimi (F#).

Bir imza dosyasında, türlerinin tanımı ve uygulamaları her yöntemi veya işlevi yineleme değil. Bunun yerine, imza her yöntem ve modül veya ad parçası uygulanan işlevselliği tam bir tarifi görür işlevini kullanın. Bir tür imzası sözdizimi arabirimleri ve soyut sınıfların soyut yöntem bildirimleri kullanılan aynı ve doğru şekilde derlenmiş giriş görüntüler de IntelliSense ve F# yorumlayıcı fsi.exe tarafından gösterilir.

Yeterli bir tür korumalı olup olmadığını belirtmek için tür imzası bilgilerinde değilse veya bir arabirim türü olup, bir öznitelik eklemek, derleyici tür Doğa gösterir. Bu amaçla kullandığınız öznitelikleri aşağıdaki tabloda açıklanmıştır.

Öznitelik

Description

[<Sealed>]

Soyut üyesi yok türü için veya, değil genişletilmesi.

[<Interface>]

Bir arabirim için bir türü.

Öznitelikler imza ve uygulama dosyası bildiriminde arasında tutarlı değilse, derleyici bir hata üretir.

Anahtar sözcüğünü kullanın val bir değer ya da değer işlevi için bir imza oluşturmak için. Anahtar sözcük type bir tür imzası tanıtır.

İmza dosyası kullanarak üretmek --sig derleyici seçeneği. Genellikle, .fsi dosyaları el ile yazmak değil. Bunun yerine, derleyici kullanarak .fsi dosyaları üretmek, biri varsa ve yöntemleri ve erişilebilir olmasını istediğiniz işlevleri kaldırarak düzenlemek, bunları, projenize ekleyin.

Tür imzaları birkaç kural vardır:

  • Türü kısaltmalar uygulama dosyasındaki bir kısaltma bir imza dosyasında olmayan bir türü ile aynı olmamalıdır.

  • Kayıtları ve discriminated sendikalar tümü veya hiçbiri kendi alanları ve kurucular göstermek gerekir ve imza sırada uygulama dosyasının eşleşmesi gerekir. Sınıflar, bazı, tümü veya hiçbiri kendi alanları ve yöntemleri İmzadaki gösterebilir.

  • Sınıflar ve kurucuları olan yapıları kendi temel sınıfları ile ilgili bildirimler göstermek gerekir ( inherits bildirimi). Ayrıca, sınıflar ve kurucuları olan yapıların tüm Soyut yöntemler ve arabirimi bildirimlerini göstermek gerekir.

  • Arabirim türleri, bunların tüm yöntemlerini ve arabirimlerini açığa gerekir.

Değer imzalar için kurallar şunlardır:

  • Erişilebilirlik değiştiricileri (public, internal, vb.) ve inline ve mutable değiştiriciler İmzada olanlar uygulamasında aynı olmalıdır.

  • Genel tür parametreleri (veya örtülü olarak algılanan açıkça) sayısı eşleşmelidir ve türleri ve genel tür parametrelerine türü kısıtlamaları eşleşmesi gerekir.

  • Literal Özniteliği kullanılır, hem imza hem de uygulama görünmesi gerekir ve her ikisi için de aynı hazır bilgi değeri kullanılmalıdır.

  • Desen parametrelerinin (olarak da bilinen parametre sayısı) imzalar ve uygulamaları tutarlı olmalıdır.

Aşağıdaki kod örneği, ad, modül, işlevi değeri ve tür imzaları ile birlikte uygun öznitelikleri olan bir imza dosyası örneği göstermektedir. Ayrıca, ilgili uygulama dosyasını gösterir.

// Module1.fsi

namespace Library1
  module Module1 = 
    val function1 : int -> int
    type Type1 =
        new : unit -> Type1
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Sealed>]
    type Type2 = 
        new : unit -> Type2
        member method1 : unit -> unit
        member method2 : unit -> unit

    [<Interface>]
    type InterfaceType1 =  
        abstract member method1 : int -> int
        abstract member method2 : string -> unit

Aşağıdaki kod, uygulama dosyasını gösterir.

namespace Library1

module Module1 =

    let function1 x = x + 1


    type Type1() =
        member type1.method1() =
            printfn "test1.method1"
        member type1.method2() =
            printfn "test1.method2"


    [<Sealed>]
    type Type2() =
        member type2.method1() =
            printfn "test1.method1"
        member type1.method2() =
            printfn "test1.method2"

    [<Interface>]
    type InterfaceType1 =
        abstract member method1 : int -> int
        abstract member method2 : string -> unit

Ayrıca bkz.

Kavramlar

Erişim denetimi (F#)

Diğer Kaynaklar

F# dil başvurusu

Derleme Seçenekleri (F#)