我试图制作ismatch的矢量化版本。
Base.ismatch
function ismatch(vector::Vector, regex::Regex)
[ismatch(regex, string) for string in vector]
end
这有效,但是这个
Base.ismatch
function ismatch(vector::Vector{String}, regex::Regex)
[ismatch(regex, string) for string in vector]
end
并不是因为Vector {ASCIIString}<:Vector {String}为false。
有没有办法解决这个问题?
答案 0 :(得分:7)
您的结果的原因是julias不变的打字系统。这意味着,虽然ASCIIString <: String
为true
,但Vector{ASCIIString} <: Vector{String}
为false
。
要四处走动,请使用参数类型:
import Base.ismatch
function ismatch{T<:String}(vector::Vector{T}, regex::Regex)
[ismatch(regex,string), for string in vector]
end