.net4.0
mytest.py
def Add (a, b):
return a+b
我可以在C#4中使用它,就像这样:
ScriptRuntime runtime = Python.CreateRuntime();
dynamic script = runtime.UseFile("mytest.py");
Console.WriteLine(script.Add(1, 3));
但是,如何在F#中使用动态?
open System
open Microsoft.Scripting.Hosting
open IronPython.Hosting
let call a b=
let runtime = Python.CreateRuntime()
let script = runtime.UseFile("mytest.py")
script.Add(a,b)
答案 0 :(得分:3)
在nuget上有一个模块FSharp.Interop.Dynamic,它使用dlr实现动态运算符。那样:
open System
open Microsoft.Scripting.Hosting
open IronPython.Hosting
open EkonBenefits.FSharp.Dynamic
let call a b=
let runtime = Python.CreateRuntime()
let script = runtime.UseFile("mytest.py")
script?Add(a,b)
与许多片段相比,它有几个优势。
添加!?前缀运算符,用于处理直接调用动态对象和在运行时没有类型的函数。
这是开源的Apache许可证,您可以查看implementation,其中包含单元测试example cases。