Aracılığıyla paylaş


Tür kesmesi (F#)

Bu konuda, F# derleyicisi değerlerini, değişkenleri, parametrelerin ve dönüş değerlerinin türlerini nasıl yorumlar açıklanmaktadır.

Genel olarak kesmesi yazın

Tür kesmesi fikri ne zaman derleyici conclusively türü olmadan yapılamaz dışında F# yapıları türlerini belirtmek gerekmez değildir. Açık tür bilgilerini yoksayarak F# dinamik olarak türlenmiş bir dil veya F# değerleri korunmayan yazılı olarak gelmez. F# derleyicisi derleme sırasında her yapı için tam bir türü deduces anlamına gelir statik olarak türlenmiş bir dil olur. Her yapı türleri ortaya çýkarmak derleyici yeterli bilgi değilse, ek bir tür bilgi, genellikle açık tür ek açıklamaları kodu ekleyerek, yerde sağlamalısınız.

Parametre ve dönüş türleri kesmesi

Parametre listesinde her parametrenin türünü belirtmeniz gerekmez. Ve henüz, F# statik olarak türlenmiş bir dil olduğu ve bu nedenle her değer ve ifade derleme zamanında kesin bir türü vardır. Açıkça belirtmeyen türleri için derleyici içeriğine göre türü yorumlar. Belirtilen tür başka türlü değilse, genel olarak algılanır. Kod değeri tutarsız bir şekilde kullanıyorsa, derleyici bir hata bildirir bir değer tüm kullanımlarını karşılayan türü olduğunu Hayır tek bir şekilde olayla.

Bir işlevin dönüş türü işlevi son ifadesinde türüne göre belirlenir.

Örneğin, aşağıdaki kodda, parametre türleri a ve b ve dönüş türü tüm olayla olmasını int çünkü hazır 100 tür int.

let f a b = a + b + 100

Tür kesmesi rakamları değiştirerek etkileyebilirsiniz. Yaptığınız 100 bir uint32 sonek ekleme tarafından u, türleri a, b, ve dönüş değeri olarak olayla uint32.

Ayrıca etkileyebilirsiniz kesmesi işlevleri ve yalnızca belirli bir türü ile çalışma yöntemleri gibi bir tür kısıtlamalar olunmasının diğer yapıları kullanarak yazın.

Ayrıca, açık tür ek açıklamaları işlev veya yöntem parametreleri ya da ifadelerde, değişkenleri aşağıdaki örneklerde gösterildiği gibi uygulayabilirsiniz. Farklı kısıtlamaları arasında çakışma meydana gelirse hataları neden.

// Type annotations on a parameter.
let addu1 (x : uint32) y =
    x + y

// Type annotations on an expression.
let addu2 x y =
    (x : uint32) + y

Bir işlevin dönüş değeri bir tür ek parametreleri sağlayarak, sonuçta da açıkça belirtebilirsiniz.

let addu1 x y : uint32 =
   x + y

Tür ek bir parametre üzerinde yararlı olduğu ortak bir nesne türü parametredir ve üye kullanmak istediğiniz durumdur.

let replace(str: string) =
    str.Replace("A", "a")

Otomatik genelleştirmesi

İşlev kodu bir parametre türüne bağımlı değilse, derleyici parametresi genel olarak düşünür. Bu adı verilen Otomatik genelleştirmesi, ve karmaşıklık artırmadan genel kod yazmak için güçlü bir yardımcı olabilir.

Örneğin, aşağıdaki işlevi, her türlü kayıt düzeni içine iki parametre birleştirir.

let makeTuple a b = (a, b)

Türü olarak algılanır

'a -> 'b -> 'a * 'b

Ek bilgi

Tür kesmesi F# dil belirtiminin daha ayrıntılı açıklanmıştır.

Ayrıca bkz.

Diğer Kaynaklar

Otomatik genelleştirmesi (F#)