Diese Frage betrifft die Verwendung von Typen und Vektoren von Typen. Ich bekomme MethodError: convert
, wenn ich zwei Dateien haben, Foo.jl
und Baz.jl
, die jeweils ein Modul enthalten, und jedes Modul einen Typ enthält.MethodError: `convert` bei Verwendung von Typen, die in Modulen in separaten Dateien definiert sind
Der Inhalt
Foo.jl
:module FooModule type Foo bar::Int end end
Der Inhalt
Baz.jl
:module BazModule include("Foo.jl") type Baz qux::Vector{FooModule.Foo} end end
Typ Foo
eine Int
enthält, und geben Baz
enthält eine Vector
von Foo
.
die Fehler erhältst ich eine Julia 0.4.7-pre + 3 REPL öffnen, in dem diese Dateien gespeichert sind, und geben Sie
include("Foo.jl")
include("Baz.jl")
foo1 = FooModule.Foo(1)
baz1 = BazModule.Baz([foo1])
, wo der vierten Befehl diesen Fehler gibt:
Es
ERROR: MethodError: `convert` has no method matching convert(::Type{BazModule.FooModule.Foo}, ::FooModule.Foo)
This may have arisen from a call to the constructor BazModule.FooModule.Foo(...),
since type constructors fall back to convert methods.
Closest candidates are:
BazModule.FooModule.Foo(::Any)
call{T}(::Type{T}, ::Any)
convert{T}(::Type{T}, ::T)
...
in copy! at abstractarray.jl:310
in call at /Users/james/Documents/code/julia/julia/Baz.jl:5
scheint ein Fehler aufgrund des Unterschieds zwischen der
FooModule
mit der
include
Anweisung in
BazModule
verbundenen und der
FooModule
in
Foo.jl
selbst.
Was ist (sind) der Fehler (s) in meinem Code, und wie sollte ich meinen Stil ändern, um den Fehler (s) zu entfernen?