我有这样的功能:
function f(
a::T,
x::T
)::T where {R<:Real, T<:Union{R,Complex{R}}}
return g(R(2), a, 1, x)
end
我想允许用户通过标识f(a,x)
{{来输入a
Real
和x
Complex{Real}
的{{1}} 1}}到带有Real
的复数。
使用此实现是不可能的。如果用户使用a
,则会返回错误(无方法)。因此,用户必须执行im = 0
。
我该怎么做才能使f(2.0, 1.0+1.0im)
成为可能?
我还没有尝试过,但是也许我可以做
f(2.0+0im, 1.0+1.0im)
但是我该怎么代替f(2.0, 1.0+1.0im)
?
答案 0 :(得分:1)
原始答案:
我相信您正在寻找的是以下
function f(a::T, x::R) where {T<:Real,R<:Complex{T}}
g(R(2), a, one(T), x)
end
编辑:
如果您想同时接受Real
和Complex
,最直接的方法就是简单地依靠Number
的子类型为{{1} }和Real
。
Complex