Numaralandırmalar (F#)
Numaralandırmaolarak da bilinen, çeteleler,, nerede etiketler atanır değerleri alt ağını için ayrılmaz türleri şunlardır.Kod daha okunaklı ve rahat bir hale getirmek için harfleri yerine bunları kullanabilirsiniz.
type enum-name =
| value1 = integer-literal1
| value2 = integer-literal2
...
Notlar
Bir sabit listesi değerleri belirtilen dışında çok basit değerlere sahip bir discriminated Birliği benzer arar.Genellikle 0 veya 1 Başlat tamsayılara veya bit konumlarını temsil eden tamsayılar değerlerdir.Bir sabit listesi bit konumlarını göstermesi amaçlanmıştır, ayrıca kullanmalısınız FlagsAttribute öznitelik.
Örneğin, hazır bir sonekle gibi kullanabilmesi için sabit listesi türlerinin kullanılır, hazýr bilgi belirlenir 1u, 2u, vb., imzalanmamış bir tamsayı (uint32) yazın.
Adlandýrýlmýþ deðerler için başvurduğunuzda, sabit listesi türünün adını bir niteleyiciolarak, diğer bir deyişle kullanmalısınız enum-name.value1, yalnızca value1.Bu davranış, discriminated sendikalar farklıdır.Numaralandırma her zaman sahip olmasıdır RequireQualifiedAccessöznitelik.
Aşağıdaki kod, bildirim ve bir sabit listesikullanımını gösterir.
// Declaration of an enumeration.
type Color =
| Red = 0
| Green = 1
| Blue = 2
// Use of an enumeration.
let col1 : Color = Color.Red
Kolayca numaralandırma dönüştürmek için temel alınan tür uygun işleçkullanarak aşağıdaki kodda gösterildiği gibi yapabilirsiniz.
// Conversion to an integral type.
let n = int col1
Enumerated types can have one of the following underlying types: sbyte, byte, int16, uint16, int32, uint32, int64, uint16, uint64, and char.Numaralandırma türleri içinde temsil edilir.net Framework klasörden devralınan türler olarak Enum, hangi sırayla alınır karşı ValueType.Bu nedenle, yığını veya satır içi nesneiçeren bulduğunuz değer türden olmaları ve sabit listesigeçerli bir değer herhangi bir temel türü değerdir.Desen eşleştirme sabit listesi değerleri değiştiğinde adlandırılmamış değerlerini yakalar bir desen vermek zorundasınız önemli olmasıdır.
enum işlev kitaplık F# bir değer bile, önceden tanımlanmış, farklı bir sabit listesi değeri üretmek için kullanılabilir değerler taşıyan bir. Kullandığınız enum işlev aşağıdaki gibi.
let col2 = enum<Color>(3)
Varsayılan enum işlev türü ile çalışır int32. Bu nedenle, diğer temel türleri sabit listesi türleri ile kullanılamaz.Bunun yerine aşağıdakileri kullanın.
type uColor =
| Red = 0u
| Green = 1u
| Blue = 2u
let col3 = Microsoft.FSharp.Core.LanguagePrimitives.EnumOfValue<uint32, uColor>(2u)