制作无参数类型具有"默认值"

Chr*_*kas 8 types julia

我基本上想要做以下事情:

typealias CVODE_BDF CVODE_BDF{:Newton,:Dense}
Run Code Online (Sandbox Code Playgroud)

也就是说,允许用户传递给我的函数CVODE_BDF,如果他们没有设置任何类型参数,则将其解释为CVODE_BDF{:Newton,:Dense}.我知道typealias实际上并没有用,但有没有办法模拟这个?就像在函数中一样,读取T.parameters[1]并以某种方式看到它是空的?

Dav*_*ers 5

如果函数接受该类型的对象,而不是该类型本身,则可以执行此操作。例如

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)