Sẽ xuất một tên hàm xuất tất cả các phiên bản chức năng khác nhau trong Julia?


9

Tôi có nhiều chức năng / công văn cho cùng một tên chức năng. Tôi muốn chắc chắn rằng tất cả chúng đều được xuất khẩu. Tôi chỉ cần bao gồm tên của hàm trong câu lệnh xuất và để Julia làm phần còn lại?

Thí dụ:

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

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

export hello

Cả hai sẽ được xuất khẩu chỉ bằng cách làm export hello?

Câu trả lời:


7

Có, bạn xuất tên hàm và hàm đó có hai phương thức trong trường hợp này và cả hai sẽ có sẵn.

Và để thêm vào, không có cách nào để xuất một tập hợp con của các phương thức.


5

Đúng rồi. Trên thực tế, không có phiên bản nào của exportcâu lệnh cho phép bạn chọn phương thức nào để xuất. Bạn xuất hàm .

Đây là một số mã minh họa hành vi:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.