Будет ли экспорт имени функции экспортировать все различные версии функций в Юлии?


9

У меня есть несколько функций / отправлений для одного и того же имени функции. Я хочу убедиться, что они все экспортируются. Нужно ли просто включить имя функции в оператор экспорта, а затем Джулия сделает все остальное?

Пример:

function hello(a::Int64, b::Int64)
   #nothing
end

function hello(a::Bool, b::Bool)
   #nothing
end

export hello

Будут ли оба они экспортироваться, просто делая export hello?

Ответы:


7

Да, вы экспортируете имя функции, и у этой функции есть два метода в этом случае, и они оба будут доступны.

И добавить, что нет способа экспортировать подмножество методов.


5

Вот так. На самом деле, нет версии exportоператора, которая позволила бы вам выбрать, какой метод экспортировать. Вы экспортируете функцию .

Вот некоторый код, который иллюстрирует поведение:

julia> module FooBar
       export foo
       foo(x::Int) = 2
       foo(x::Char) = 'A'
       end
Main.FooBar

julia> foo
ERROR: UndefVarError: foo not defined

julia> @which foo
ERROR: "foo" is not defined in module Main
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] which(::Module, ::Symbol) at .\reflection.jl:1160
 [3] top-level scope at REPL[15]:1

julia> using .FooBar

julia> @which foo
Main.FooBar

julia> methods(foo)
# 2 methods for generic function "foo":
[1] foo(x::Char) in Main.FooBar at REPL[13]:4
[2] foo(x::Int64) in Main.FooBar at REPL[13]:3
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.