导出函数名称会在Julia中导出所有不同的函数版本吗?


9

我具有同一个函数名称的多个函数/调度。我想确保它们都已导出。我是否只需要在export语句中包含函数的名称,然后让Julia做其余的事情?

例:

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

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

export hello

这两个都只是做出口export hello吗?

Answers:


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.