我从DiffEqFinancial.jl的源代码中获得了正确设置自己系统的灵感。我不理解以下代码片段中true
和false
的用途:
sde_f = SDEFunction{true}(f,g)
SDEProblem{false}(f,g,u0,tspan;kwargs...)
那么{true}
和{false}
在这种情况下会做什么呢?
我想知道我是否也应该在自己的用户代码中使用它。我隐约知道一句格言:;严格类型的类型,松散类型的函数;所以我想知道为什么在这里打字。
在发布我的问题几个小时后,我找到了作者Chris Rackauckas自己的答案。报价:
如果您正在创建数千个非常小的ODEProblems,并且希望避免动态检查,那么你应该这样做ODEProblem{false}(…(或ODEProblem{true}(..(,即直接声明无论是原位还是错位形式。通常这不是这是一笔巨大的交易,所以在文档中很少提及,但它就在那里,因为在某些情况下这会有所帮助。
来源:Chris Rackauckas