我可以在 C++ 中轻松地做到这一点(注意:我没有测试它的正确性——这只是为了说明我正在尝试做的事情):
const int BadParam = -1;
const int Success = 0;
int MyFunc(int param)
{
if(param < 0)
{
return BadParam;
}
//normal processing
return Success;
}
但我无法弄清楚如何在 F# 中尽早退出例程。我想要做的是在输入错误时退出该功能,但如果输入正常则继续。我是否错过了 F# 的一些基本属性,还是因为我只是在学习 FP,所以我以错误的方式解决了这个问题?失败是我唯一的选择吗?
这就是我到目前为止所得到的,它可以编译:
#light
module test1
(* Define how many arguments we're expecting *)
let maxArgs = 2;;
(* The indices of the various arguments on the command line *)
type ProgArguments =
| SearchString = 0
| FileSpec = 1;;
(* Various errorlevels which the app can return and what they indicate *)
type ProgReturn =
| Success = 0
| WrongNumberOfArgumentsPassed = 1;;
[<EntryPoint>]
let main (args:string[]) =
printfn "args.Length is %d" args.Length
let ProgExitCode = if args.Length <> maxArgs then
printfn "Two arguments must be passed"
int ProgReturn.WrongNumberOfArgumentsPassed
(* Want to exit "main" here but how? *)
else
int ProgReturn.Success
let searchstring, filespec = args.[int ProgArguments.SearchString],args.[int ProgArguments.FileSpec];
printfn "searchstring is %s" searchstring
printfn "filespec is %s" filespec
ProgExitCode;;
有没有处理这种事情的 FP 方式?