W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)計(jì)算中使用F#中的選項(xiàng)類型時(shí),可能存在或可能不存在變量或函數(shù)的值。 選項(xiàng)類型用于在計(jì)算中表示可選值。 它們可以有兩個(gè)可能的值 - 一個(gè)(x)或無(wú)。
讓我們來(lái)分割功能的例子。下面的程序說(shuō)明了這一點(diǎn) -
讓我們寫(xiě)一個(gè)函數(shù)div,并發(fā)送兩個(gè)參數(shù)給它20和5
let div x y = x / y let res = div 20 5 printfn "Result: %d" res
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Result: 4
如果第二個(gè)參數(shù)為0,則程序拋出一個(gè)異常
let div x y = x / y let res = div 20 0 printfn "Result: %d" res
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Unhandled Exception: System.DivideByZeroException: Division by zero
在這種情況下,我們可以使用的選項(xiàng)類型返回一些(值)時(shí),操作成功或None如果操作失敗。
下面的例子演示了如何使用的選項(xiàng)
let div x y = match y with | 0 -> None | _ -> Some(x/y) let res : int option = div 20 4 printfn "Result: %A " res
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Result: Some 5
選項(xiàng)類型支持以下屬性和方法
屬性或方法 | 類型 | 描述 |
---|---|---|
None | 'T option | 靜態(tài)屬性,使您能夠創(chuàng)建具有None值的選項(xiàng)值。 |
IsNone | bool | 如果該選項(xiàng)的none值,則返回true。 |
IsSome | bool | 如果該選項(xiàng)的值是不無(wú)返回true。 |
Some | 'T option | 一個(gè)靜態(tài)成員,它創(chuàng)建一個(gè)值為notNone的選項(xiàng)。 |
Value | 'T | 返回基礎(chǔ)值,如果值為None,則拋出NullReferenceException。 |
let checkPositive (a : int) = if a > 0 then Some(a) else None let res : int option = checkPositive(-31) printfn "Result: %A " res
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Result: <null>
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
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Result: Some 5 Result: 5
let isHundred = function | Some(100) -> true | Some(_) | None -> false printfn "%A" (isHundred (Some(45))) printfn "%A" (isHundred (Some(100))) printfn "%A" (isHundred None)
當(dāng)你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
false true false
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: