在 F# 中使用没有类型的 Result<>

Tho*_*mas 2 f#

我想做这样的事情:

let a x : Result<_, string> =
    match x with
    | 1 -> Ok
    | _ -> Error "not 1"
Run Code Online (Sandbox Code Playgroud)

这不会编译。

有没有办法不指定 ok 类型并且不返回任何内容?

JLR*_*she 7

不是经验丰富的 F# 编码员,但我的理解是指示“无返回值”的方式是使用Unit.

这编译。你所做的就足够了吗?

let a x =
    match x with
    | 1 -> Ok ()
    | _ -> Error "not 1"
Run Code Online (Sandbox Code Playgroud)

或者使用显式返回类型:

let a x : Result<Unit, string> =
    match x with
    | 1 -> Ok ()
    | _ -> Error "not 1"
Run Code Online (Sandbox Code Playgroud)

鉴于这Ok是一个参数化类型,我认为没有办法让它Ok自己为你正在做的事情工作。