2016-11-21 3 views
1

Я использую пакет dataStructures.jl. В документации на сайте говорится, что когда-то создали словарис использованием данных импортаStructures.jl

dict = DataStructures.SortedDict{Int64, Int64} 

я должен иметь возможность вставить пары ключ-значение в структуре данных с помощью функции, например

insert!(dict, 10, 100) 

, но я получаю ошибку

ERROR: MethodError: `insert!` has no method matching insert!(
::Type{DataStructures.SortedDict{Int64,Int64,Ord<:Base.Order.Ordering}}, ::Int64, ::Int64) 
Closest candidates are: 
insert!{T}(::Array{T,1}, ::Integer, ::Any) 
insert!(::BitArray{1}, ::Integer, ::Any) 
insert!(::PyCall.PyVector{T}, ::Integer, ::Any) 

Почему это? Благодарю.

ответ

2

Я думаю, что вы создали тип данных, а не словарь:

julia> using DataStructures 

julia> dict = DataStructures.SortedDict{Int64, Int64} 
DataStructures.SortedDict{Int64,Int64,Ord<:Base.Order.Ordering} 

julia> typeof(dict) 
DataType 

-The сообщение об ошибке говорит: «Не вызывайте эту функцию с типом в качестве первого аргумента, не существует способа, что «.

Я думаю, что это то, что вы хотите:

julia> dict = SortedDict(["a" => 1, "b" => 2]) 
DataStructures.SortedDict{String,Int64,Base.Order.ForwardOrdering} with 2 entries: 
    "a" => 1 
    "b" => 2 

julia> typeof(dict) 
DataStructures.SortedDict{String,Int64,Base.Order.ForwardOrdering} 
+2

DataStructures.jl могли бы сделать его немного легче построить пустой 'SortedDict'. Это определение будет делать трюк: '(:: Type {SortedDict {T, S}}) {T, S}() = SortedDict {T, S, Base.Order.ForwardOrdering}()'. Это позволит 'SortedDict {Int, Int}()', как вы могли ожидать, будет работать. –

Смежные вопросы