การส่งออกชื่อฟังก์ชันจะส่งออกรุ่นของฟังก์ชันที่แตกต่างกันทั้งหมดใน Julia หรือไม่


10

ฉันมีฟังก์ชั่นหลายอย่าง / ยื้อสำหรับชื่อฟังก์ชั่นเดียวกัน ฉันต้องการให้แน่ใจว่าพวกเขาจะถูกส่งออกทั้งหมด ฉันต้องรวมชื่อของฟังก์ชันในคำสั่งส่งออกแล้วให้ 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.