我正在使用julia v0.6代码。但是我的julia版本是v1.1。我不知道如何修改这段代码
roadway_HOLO = open(io->read_dxf(io, Roadway, dist_threshold_lane_connect=2.0), joinpath(@__DIR__, "../data/ngsim_HOLO.dxf"), "r")
convert_curves_feet_to_meters!(roadway_HOLO)
open(io->write(io, roadway_HOLO), joinpath(@__DIR__, "../data/ngsim_HOLO.txt"), "w")
该错误发生在代码的最后一行。请帮忙。
ERROR: LoadError: LoadError: MethodError: no method matching write(::IOStream, ::AutomotiveDrivingModels.Roadway)
Closest candidates are:
write(::IO, ::Any) at io.jl:498
write(::IO, ::Any, ::Any...) at io.jl:500
write(::IOStream, ::UInt8) at iostream.jl:378
...
Stacktrace:
答案 0 :(得分:1)
我相信您正在使用此AutomotiveDrivingModels.jl。 seems to be that必须将MIME("text/plain")
传递给对write
的调用,才能将Roadway
对象写入文本文件。
open(io->write(io, MIME("text/plain"), roadway_HOLO), joinpath(@__DIR__, "../data/ngsim_HOLO.txt"), "w")
# or
open(io->write(io, MIME"text/plain"(), roadway_HOLO), joinpath(@__DIR__, "../data/ngsim_HOLO.txt"), "w")
请注意,您也可以将do
语法用于第一个参数为Function
的方法,例如open
。上面的调用等同于下面的调用。
open(joinpath(@__DIR__, "../data/ngsim_HOLO.txt"), "w") do io
write(io, MIME("text/plain"), roadway_HOLO)
end
请注意,methods(write)
通常应显示write
类型的Roadway
方法,并且?write
应显示此{{1} } 方法。如果将来碰巧遇到类似的错误,则可能需要尝试使用这些方法来找到正确的方法签名。
答案 1 :(得分:1)
使用Serialization
将Julia对象存储在文件中:
考虑一些自定义数据结构和一些对象。
struct Some
x::String
y::Int
end
s = Some("test 123",12345)
可以使用以下命令序列化以上结构:
using Serialization
open("file.bin","w") do f
serialize(f,s)
end
现在让我们测试反序列化:
julia> open("file.bin") do f; println(deserialize(f)==s); end
true