ماژول‌ها در جولیا

ساخت ماژول با module، import و using، ساختار پروژه‌های جولیا

ماژول چیست؟

ماژول (Module) فضای نام مستقل است — برای سازماندهی کد و جلوگیری از تداخل نام‌ها:

module MyMath

# توابع عمومی (قابل export)
export add, multiply

function add(a, b)
    return a + b
end

function multiply(a, b)
    return a * b
end

# خصوصی — بیرون دیده نمی‌شود
function secret()
    return "مخفی!"
end

end   # module

استفاده از ماژول

# using — همه export ها مستقیم
using .MyMath

println(add(2, 3))       # مستقیم!
println(multiply(4, 5))

# import — با نام ماژول
import .MyMath

println(MyMath.add(2, 3))

# فقط چیزهای خاص
using .MyMath: add

println(add(1, 1))
-- multiply(2, 2)   -- ❌ import نشده!
تفاوت مهم: using توابع export‌شده را مستقیم در دسترس می‌گذارد، import با نام ماژول صدا می‌زنید!

ماژول‌های استاندارد

جولیا ماژول‌های داخلی دارد که همیشه در دسترس‌اند:

# بدون نیاز به using!
println(sqrt(16))       # از Base
println([1,2] .+ 1)     # از Base

# ماژول‌های دیگر:
using Dates
println(Dates.today())

using LinearAlgebra
println(LinearAlgebra.norm([3, 4]))   # 5.0

ساختار پروژه واقعی

myproject/
├── Project.toml
├── src/
│   ├── myproject.jl   # ماژول اصلی
│   ├── utils.jl
│   └── math.jl
└── test/
    └── runtests.jl

-- در myproject.jl:
module myproject

include("utils.jl")
include("math.jl")

export main_function

end

include — ترکیب فایل‌ها

module MyApp

include("helpers.jl")   # محتوای helpers.jl اینجا کپی می‌شود
include("models.jl")

end

چرا ماژول؟

در ویرایشگر آنلاین ما ماژول‌های چندفایله کار نمی‌کنند (فایلی نیست!) اما می‌توانید الگوی ماژول را داخل یک فایل تمرین کنید.

این مبحث بخشی از دوره آموزش کامل جولیا است.

ابزارهای مرتبط