Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Тип параметра "Значение" в F# используется при следующих двух обстоятельствах:
- Сценарий подходит для параметра F#.
- Использование структуры обеспечивает преимущество производительности в вашем сценарии.
Не все сценарии с учетом производительности решаются с помощью структур. Необходимо учитывать дополнительные затраты на копирование при их использовании вместо ссылочных типов. Однако большие программы F# обычно создает экземпляры многих необязательных типов, которые проходят через горячие пути, и в таких случаях структуры часто могут повысить общую производительность в течение всего времени существования программы.
Определение
Параметр значения определяется как различающееся объединение структуры , аналогичное типу ссылочного параметра. Его определение можно рассматривать следующим образом:
[<StructuralEquality; StructuralComparison>]
[<Struct>]
type ValueOption<'T> =
| ValueNone
| ValueSome of 'T
Параметр значения соответствует структурному равенству и сравнению. Основное различие заключается в том, что скомпилированное имя, имя типа и имена регистров указывают на то, что это тип значения.
Использование параметров значения
Параметры значений используются так же, как параметры.
ValueSome используется для указания того, что значение присутствует, и ValueNone используется, если значение отсутствует:
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!"
Как и в случае с параметрами, соглашение об именовании для функции, возвращающейсяValueOption, заключается в префиксе.try
Свойства и методы параметра value
В настоящее время существует одно свойство для параметров значения: Value Вызывается InvalidOperationException , если значение отсутствует при вызове этого свойства.
Функции параметра значения
Модуль ValueOption в FSharp.Core содержит эквивалентные Option функциональные возможности модуля. Существует несколько различий в имени, таких как defaultValueArg:
val defaultValueArg : arg:'T voption -> defaultValue:'T -> 'T
Это действует так же, как defaultArg и в модуле Option , но работает с параметром "Значение".