F#If-Then-Else麻烦

时间:2015-02-20 03:41:20

标签: f#

let downTo n = 

    if (n.Equals(0)) then
        printfn "\n Empty List Provided \n";;
    else
        List.rev(List.init n (fun index -> index + 1));;

如果传递的数字大于0,我正在尝试创建列表'n'长度。如果没有,请打印错误消息。列表单独工作,但不在If-Else语句中。如何实现这一目标?请帮忙。

1 个答案:

答案 0 :(得分:6)

F#if表达式是表达式而不是语句。这意味着表达式的两个部分需要具有相同的类型。在这种情况下,一方的类型为int list,另一方的类型为unit

这样的事情会对你有所帮助:

let downTo n =
    if (n.Equals(0)) then
        printfn "\n Empty List Provided \n"
        []
    else
        List.rev(List.init n (fun index -> index + 1))

或者,您可以抛出异常,但这样做有一个缺点,就是你必须围绕它做try/catch