Próbuję wywołać funkcję C# z f #, gdzie funkcja C# przyjmuje funkcję (delegate?) Jako parametr i potrzebuję tego argumentu, aby był funkcją f #. Np:Używanie C# delegatów z funkcją f #
próbka C#
public static void function_1(double x, ref double y)
{
y = Math.Exp(x);
}
main()
{
state s;
call_func(s, function_1)
}
Więc call_func
ma parametr typu void fn(double, ref double)
w F # ja próbowałem:
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)
Ale pojawia się błąd, że f # function_1
ma wpisz double -> double byref -> unit
, kiedy powinien to być typ delegata void fn(double, ref double)
.
Czy mogę rzucić typ lub coś w tym stylu? Czy jest jakiś błąd?
dziękuję za pomoc, ale pojawia się błąd "Typ" fn "nie jest zdefiniowany" dla nowego argumentu. – b1g3ar5
'fn' jest typem delegata, którego funkcja oczekuje. Być może brakuje ci 'open' dla przestrzeni nazw, w której się znajduje. Lub może być nazwany czymś innym w twoim kodzie. Lub może być zagnieżdżony w jakiejś klasie (jeśli tak jest, powinieneś podać nazwę wraz z nazwą typu, który zawiera delegata). – svick
OK, rozumiem - że kompiluje się teraz. Jeśli zrezygnuję z nowego, a fn też się skompiluje, czy to zadziała? – b1g3ar5