gpt4 book ai didi

f# - 如何在 F# 接口(interface)中使用 out 属性?

转载 作者:行者123 更新时间:2023-12-04 10:39:44 24 4
gpt4 key购买 nike

我想将我的参数之一定义为我的一个接口(interface)中的 C# out 参数。我意识到 F# 支持 byref但是我该如何申请 System.Runtime.InteropServices.OutAttribute到我的接口(interface)参数之一?

我正在尝试复制的 C# 接口(interface)

public interface IStatisticalTests
{
void JohansenWrapper(
double[,] dat,
double alpha,
bool doAdfPreTests,
out double cointStatus,
out JohansenModelParameters[] johansenModelParameters);
}

最佳答案

这是一个例子:

open System
open System.Runtime.InteropServices

[<Interface>]
type IPrimitiveParser =
//
abstract TryParseInt32 : str:string * [<Out>] value:byref<int> -> bool

[<EntryPoint>]
let main argv =
let parser =
{ new IPrimitiveParser with
member __.TryParseInt32 (str, value) =
let success, v = System.Int32.TryParse str
if success then value <- v
success
}

match parser.TryParseInt32 "123" with
| true, value ->
printfn "The parsed value is %i." value
| false, _ ->
printfn "The string could not be parsed."

0 // Success

这是您的界面,已翻译:
[<Interface>]
type IStatisticalTests =
//
abstract JohansenWrapper :
dat:float[,] *
alpha:float *
doAdfPreTests:bool *
[<Out>] cointStatus:byref<float> *
[<Out>] johansenModelParameters:byref<JohansenModelParameters[]>
-> unit

关于f# - 如何在 F# 接口(interface)中使用 out 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com