Julia 指定包含任意数字的向量/数组的类型
朱莉娅是新来的-所以我为这个简单的问题道歉,只是似乎在任何地方都找不到答案: 我试图创建一个函数,该函数将向量作为参数,但强制该向量包含数字(浮点数或整数) 我觉得应该这样写:Julia 指定包含任意数字的向量/数组的类型,julia,Julia,朱莉娅是新来的-所以我为这个简单的问题道歉,只是似乎在任何地方都找不到答案: 我试图创建一个函数,该函数将向量作为参数,但强制该向量包含数字(浮点数或整数) 我觉得应该这样写: function foo(x::Vector{Number}) return x.^2 end 但是用foo([5.0])运行这个程序会产生 ERROR: MethodError: no method matching foo(::Array{Float64,1}) Closest candidates are
function foo(x::Vector{Number})
return x.^2
end
但是用foo([5.0])
运行这个程序会产生
ERROR: MethodError: no method matching foo(::Array{Float64,1})
Closest candidates are:
foo(::Array{Number,1}) at REPL[16]:2
为什么会这样?我不想求助于说x::Vector
,这会起作用,但不会提供我想要的类型检查强制。您可以编写
function foo(x::Vector{T}) where {T<:Number}
return x.^2
end
如果确实只想允许浮点和整数,可以执行以下操作:
function foo(x::AbstractVector{<:Union{AbstractFloat, Integer}})
return x.^2
end
函数foo(x::AbstractVector{您可以编写
function foo(x::Vector{T}) where {T<:Number}
return x.^2
end
如果确实只想允许浮点和整数,可以执行以下操作:
function foo(x::AbstractVector{<:Union{AbstractFloat, Integer}})
return x.^2
end
函数foo(x::AbstractVector{如果OP只支持浮点和整数(例如不支持复杂的
),那么如果OP只支持浮点和整数(例如不支持复杂的
),那么最好用实的
替换数字
)然后最好用Real
替换Number
,DNF的答案是正确的,但另外注意,最好对函数参数类型使用AbstractVector
,而不是Vector
,除非您有充分的理由。答案中的代码将在foo(1:4)上失败
,例如。DNF的答案是正确的,但另外请注意,最好对函数参数类型使用AbstractVector
,而不是Vector
,除非您另有充分理由。例如,答案中的代码将在foo(1:4)
上失败。