惊讶地发现DelimitedFiles.readdlm(source, ...)
更改了source
输入参数。感到惊讶,因为Ι在官方文档https://docs.julialang.org/en/v1/stdlib/DelimitedFiles/index.html中找不到任何指示。这只是关于茱莉亚变异性的标准假设吗?我以为可能会更改输入参数的somefunction
会用somefunction!
进行指示(将!
添加到函数名)?
l使用了以下功能:
out = DelimitedFiles.readdlm(source,',',header=true)
在调用之前,源的类型为Array{UInt8,1}
,并且包含多个元素。通话后,out的类型为Tuple{Array{Any,2},Array{AbstractString,2}}
,source的类型为Array{UInt8,1}
(未更改),source的状态为空(已更改)。
答案 0 :(得分:3)
原因是String(vec::Vector{UInt8})
不会执行复制,而是拥有vec
的所有权(并对其进行突变)。
现在您应该写:
out = DelimitedFiles.readdlm(copy(source),',',header=true)
我问了一个问题here,以澄清预期的目标行为(复制或非复制)。