2016-11-27 3 views
1

относятся к этому пункту:Pkg.installed ("anInvalidPackage"), ничего не должен возвращать или выдавать ошибку?

installed(pkg) → Void | VersionNumber

If pkg is installed, return the installed version number, otherwise return nothing. 

из JuliaDoc

Pkg.installed("anInvalidPackage") функция должна возвращать nothing но выдает ошибку:

julia> VERSION 
v"0.5.0" 
julia> Pkg.installed("anInvalidPackage") 
ERROR: anInvalidPackage is not a package (not registered or installed) 
in installed(::String) at .\pkg\entry.jl:123 
in (::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#installed,Tuple{String}}) 
() at .\pkg\dir.jl:31 
in cd(::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#installed,Tuple{String} 
}, ::String) at .\file.jl:48 
in #cd#1 at .\pkg\dir.jl:31 
in installed(::String) at .\pkg\pkg.jl:129 

EDIT: issue

+0

Странно, как он снимал "в" из строки ... – daycaster

+0

@daycaster typo –

+0

«Ну, Уотсон, это устраняет эту линию дознания!» :) – daycaster

ответ

2

Если сказка взглянуть т исходного кода модуля Pkg в базе он должен дать использовать некоторые подсказки:

function installed(pkg::AbstractString) 
    avail = Read.available(pkg) 
    if Read.isinstalled(pkg) 
     res = typemin(VersionNumber) 
     ### some libgit2 stuff ### 
    end 
    isempty(avail) && throw(PkgError("$pkg is not a package (not registered or installed)")) 
    return nothing # registered but not installed 
end 

Из последних двух строк мы можем видеть, что Джулия будет выдавать ошибку, если пакет не зарегистрирован или установлен , Однако, если пакет зарегистрирован, но не установлен, ошибка не будет сброшена и возвращается nothing.

Так

var = Pkg.installed("AMD") # returns nothing for me as I don't have AMD installed 
          # but it is a registered package 

Но:

altvar = Pkg.installed("this_is_not_the_name_of_any_package") 
# will throw an error 

Я согласен, что документы, вероятно, следует сделать это более ясным ...