私は、関数f#(代理?)をパラメータとするf#からc#関数を呼び出そうとしており、この引数をf#関数にする必要があります。例:#f#関数でのC#代理人の使用
public static void function_1(double x, ref double y)
{
y = Math.Exp(x);
}
main()
{
state s;
call_func(s, function_1)
}
C
サンプルだから、call_func
は、私が試した、F#ではタイプvoid fn(double, ref double)
のパラメータがあります。
let function_1 (x:double) (y:double byref) =
let y = 6.0
()
let test =
let s = new state
let ret = call_func(s, function_1)
しかし、私はF#のfunction_1
が持っているエラーが発生します代理人void fn(double, ref double)
の種類である場合はdouble -> double byref -> unit
と入力します。
タイプなどをキャストできますか?またはエラーがありますか?
あなたの助けてくれてありがとう、しかし、私はエラーが発生しました "タイプ 'fn'は新しい引数のために定義されていません。 – b1g3ar5
'fn'は、関数が期待するデリゲートの型です。おそらく、それが入っているネームスペースに対して 'open'が不足しているかもしれません。あるいは、あなたのコードで別のものと呼ばれるかもしれません。または、あるクラスにネストすることもできます(そのような場合は、デリゲートを含む型の名前とともに名前を指定する必要があります)。 – svick
OK、私は理解します - 今コンパイルします。私が新しいものを残しておけばそれもコンパイルされますが、それはうまくいくのでしょうか? – b1g3ar5