Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
F# dilindeki Değer Seçeneği türü, aşağıdaki iki durum geçerli olduğunda kullanılır:
- Bir senaryo F# Seçeneği için uygundur.
- Yapı kullanmak senaryonuzda bir performans avantajı sağlar.
Performansa duyarlı senaryoların tümü yapılar kullanılarak "çözülmez". Başvuru türleri yerine bunları kullanırken kopyalamanın ek maliyetini göz önünde bulundurmanız gerekir. Ancak, büyük F# programları genellikle sık erişimli yollardan akan birçok isteğe bağlı türün örneğini oluşturur ve bu gibi durumlarda yapılar genellikle bir programın ömrü boyunca daha iyi bir genel performans sağlayabilir.
Tanım
Değer Seçeneği, başvuru seçeneği türüne benzer bir yapı ayrımcı birleşim olarak tanımlanır. Tanımı şu şekilde düşünülebilir:
[<StructuralEquality; StructuralComparison>]
[<Struct>]
type ValueOption<'T> =
| ValueNone
| ValueSome of 'T
Değer Seçeneği yapısal eşitlik ve karşılaştırmaya uygundur. Temel fark, derlenen adın, tür adının ve büyük/küçük harf adlarının tümünün bunun bir değer türü olduğunu belirtmesidir.
Değer Seçeneklerini Kullanma
Değer Seçenekleri, Seçenekler gibi kullanılır.
ValueSome bir değerin mevcut olduğunu belirtmek için kullanılır ve ValueNone bir değer mevcut olmadığında kullanılır:
let tryParseDateTime (s: string) =
match System.DateTime.TryParse(s) with
| (true, dt) -> ValueSome dt
| (false, _) -> ValueNone
let possibleDateString1 = "1990-12-25"
let possibleDateString2 = "This is not a date"
let result1 = tryParseDateTime possibleDateString1
let result2 = tryParseDateTime possibleDateString2
match (result1, result2) with
| ValueSome d1, ValueSome d2 -> printfn "Both are dates!"
| ValueSome d1, ValueNone -> printfn "Only the first is a date!"
| ValueNone, ValueSome d2 -> printfn "Only the second is a date!"
| ValueNone, ValueNone -> printfn "None of them are dates!"
Seçenekler'de olduğu gibi, döndüren ValueOption bir işlevin adlandırma kuralı, işlevin ön ekini eklemektirtry.
Değer Seçeneği özellikleri ve yöntemleri
Şu anda Değer Seçenekleri için bir özellik vardır: Value.
InvalidOperationException Bu özellik çağrıldığında bir değer yoksa oluşturulur.
Değer Seçeneği işlevleri
ValueOption FSharp.Core'daki modül, modüle Option eşdeğer işlevler içerir. Ad olarak birkaç fark vardır, örneğin defaultValueArg:
val defaultValueArg : arg:'T voption -> defaultValue:'T -> 'T
Bu, modüldeki Option gibi defaultArg davranır, ancak bunun yerine bir Değer Seçeneği üzerinde çalışır.