【问题标题】:Will exporting a function name export all the different function versions in Julia?导出函数名称会导出 Julia 中所有不同的函数版本吗?
【发布时间】:2020-04-25 16:33:47
【问题描述】:

对于同一个函数名,我有多个函数/调度。我想确保它们都被导出。我是否只需要在导出语句中包含函数的名称,然后让 Julia 完成剩下的工作?

例子:

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

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

export hello

这两个都可以通过export hello 导出吗?

【问题讨论】:

    标签: julia


    【解决方案1】:

    是的,你导出函数名,在这种情况下,该函数有两个方法,它们都将可用。

    此外,没有办法导出方法的子集。

    【讨论】:

      【解决方案2】:

      没错。实际上,没有任何版本的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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-19
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多