F #-옵션
그만큼 optionF #의 유형은 변수 또는 함수에 대한 값이있을 수도 있고 없을 수도있는 계산에 사용됩니다. 옵션 유형은 계산에서 선택적 값을 나타내는 데 사용됩니다. 두 가지 가능한 값을 가질 수 있습니다.Some(x) 또는 None.
예를 들어, 나누기를 수행하는 함수는 정상적인 상황에서 값을 반환하지만 분모가 0 인 경우 예외를 throw합니다. 여기에서 옵션을 사용하면 함수의 성공 여부를 나타내는 데 도움이됩니다.
옵션에는 기본 유형이 있으며 해당 유형의 값을 보유하거나 값이 없을 수 있습니다.
옵션 사용
나누기 함수의 예를 들어 보겠습니다. 다음 프로그램은 이것을 설명합니다-
함수 div를 작성하고 20과 5에 두 개의 인수를 보냅니다.
let div x y = x / y
let res = div 20 5
printfn "Result: %d" res
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Result: 4
두 번째 인수가 0이면 프로그램은 예외를 발생시킵니다.
let div x y = x / y
let res = div 20 0
printfn "Result: %d" res
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Unhandled Exception:
System.DivideByZeroException: Division by zero
이러한 경우 옵션 유형을 사용하여 작업이 성공하면 Some (값)을 반환하고 작업이 실패하면 None을 반환 할 수 있습니다.
다음 예제는 옵션의 사용을 보여줍니다-
예
let div x y =
match y with
| 0 -> None
| _ -> Some(x/y)
let res : int option = div 20 4
printfn "Result: %A " res
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Result: Some 5
옵션 속성 및 방법
옵션 유형은 다음 속성과 방법을 지원합니다-
재산 또는 방법 | 유형 | 기술 |
---|---|---|
없음 | 'T 옵션 | 옵션 값을 만들 수있는 정적 속성입니다. None value. |
IsNone | 부울 | 보고 true 옵션에 None 값. |
IsSome | 부울 | 보고 true 옵션에 그렇지 않은 값이있는 경우 None. |
약간 | 'T 옵션 | 값이 아닌 옵션을 만드는 정적 멤버 None. |
값 | '티 | 기본 값을 반환하거나 값이 다음과 같은 경우 NullReferenceException을 throw합니다. None. |
예 1
let checkPositive (a : int) =
if a > 0 then
Some(a)
else
None
let res : int option = checkPositive(-31)
printfn "Result: %A " res
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Result: <null>
예 2
let div x y =
match y with
| 0 -> None
| _ -> Some(x/y)
let res : int option = div 20 4
printfn "Result: %A " res
printfn "Result: %A " res.Value
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
Result: Some 5
Result: 5
예제 3
let isHundred = function
| Some(100) -> true
| Some(_) | None -> false
printfn "%A" (isHundred (Some(45)))
printfn "%A" (isHundred (Some(100)))
printfn "%A" (isHundred None)
프로그램을 컴파일하고 실행하면 다음과 같은 출력이 생성됩니다.
false
true
false