f# - 在 F# 中,如何创建具有输出参数的成员

  显示原文与译文双语对照的内容
0 0

我知道对于F#我能对付 out当我从F#,请使用这些参数指定为结果成员元组.g 。

(success, i) = System.Int32.TryParse(myStr)

我想知道的是我怎样在类外定义成员的签名,该签名似乎C#为通过一个 out参数。

有可能这么做? 并不如直接返回元组和C#中调用该方法时,应具有相反的过程发生.g 。

type Example() =
  member x.TryParse(s: string, success: bool byref)
    = (false, Unchecked.defaultof<Example>)
时间:原作者:2个回答

0 0

不,你不能返回的结果是一个元组,你需要将该值赋给函数中的byref值,然后返回结果。 另外注意下, [<Out>]如果将实现这一目标,就将参数可用作C#, ref参数。

open System.Runtime.InteropServices
type Foo () =
    static member TryParse (str : string, [<Out>] success : byref<bool>) : Foo =
        // Manually assign the 'success' value before returning
        success <- false
        // Return some result value
        // TODO
        raise <| System.NotImplementedException "Foo.TryParse"
原作者:
0 0
open System.Runtime.InteropServices
type Test() = 
    member this.TryParse(text : string, [<Out>] success : byref<bool>) : bool = 
       success <- false
       false
let ok, res = Test().TryParse("123")
原作者:
...