我基本上想要做以下事情:
typealias CVODE_BDF CVODE_BDF{:Newton,:Dense}
Run Code Online (Sandbox Code Playgroud)
也就是说,允许用户传递给我的函数CVODE_BDF,如果他们没有设置任何类型参数,则将其解释为CVODE_BDF{:Newton,:Dense}.我知道typealias实际上并没有用,但有没有办法模拟这个?就像在函数中一样,读取T.parameters[1]并以某种方式看到它是空的?
如果函数接受该类型的对象,而不是该类型本身,则可以执行此操作。例如
type MyObject{T}
end
const DefaultMyObject = MyObject{Int64}()
f{T}(x::MyObject{T}=DefaultMyObject) = T
f(), f(MyObj{Float64}())
Run Code Online (Sandbox Code Playgroud)
给
(Int64,Float64)
Run Code Online (Sandbox Code Playgroud)