いいえ、結果をタプルとして返すことはできません。関数から結果を返す前に、値を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"
Try
メソッドに正規のC#シグネチャ(たとえば)を持たせたい場合は、メソッドからaInt32.TryParse
を返し、bool
解析された可能性のあるものFoo
をbyref<'T>
、のように渡す必要があります。
open System.Runtime.InteropServices
type Foo () =
static member TryParse (str : string, [<Out>] result : byref<Foo>) : bool =
// Try to parse the Foo from the string
// If successful, assign the parsed Foo to 'result'
// TODO
// Return a bool indicating whether parsing was successful.
// TODO
raise <| System.NotImplementedException "Foo.TryParse"