我有几个口头表达式,我已经打包成一个函数:
open FsVerbalExpressions
open FsVerbalExpressions.VerbalExpression
open System.Text.RegularExpressions
open System
let createOrVerbExFromList (verbExList: VerbEx list) =
let orVerbEx =
verbExList
|> List.reduce (fun acc thing -> verbExOrVerbEx RegexOptions.IgnoreCase acc thing) //simpleVerbEx
orVerbEx
let k12VerbEx =
let kTo12 = ["SCHOOL"; "DIST"; "SD"; "HS"; "BD OF ED"]
kTo12
|> List.map (fun word -> VerbEx(word))
|> createOrVerbExFromList
let twoYearCollegeVerbEx =
VerbEx("2 Year College")
let universityVerbEx =
VerbEx("UNIV")
let privateSchoolVerbEx =
VerbEx("ACAD")
//Here there be dragons:
let newInst (x: string) =
match (isMatch x k12VerbEx) …Run Code Online (Sandbox Code Playgroud) 我有一个返回的函数(我们称之为“doSomething”):
('a * 'b) option
Run Code Online (Sandbox Code Playgroud)
并希望实现这样的目标:
let testA = doSomething ....
if testA.IsSome then return testA.Value
let testB = doSomething ....
if testB.IsSome then return testB.Value
let testC = doSomething ....
if testC.IsSome then return testC.Value
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个计算表达式或等效的简单语法,它会在结果为 None 时继续执行,但保留第一个 Some 结果。
显然我想避免while if / elif / elif / ... / elif / else 厄运金字塔。
f# ×2