함수 이름을 내 보내면 Julia의 다른 모든 함수 버전이 내보내 집니까?


9

동일한 기능 이름에 대해 여러 기능 / 패치가 있습니다. 모두 내보내기했는지 확인하고 싶습니다. export 문에 함수 이름을 포함시키고 Julia가 나머지를 수행하도록해야합니까?

예:

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.