Tuple و NamedTuple در جولیا

Tuple های تغییرناپذیر، NamedTuple با نام فیلد و کاربردهای هرکدام

Tuple چیست؟

Tuple کالکشن مرتب اما تغییرناپذیر (immutable) است — وقتی ساختید، دیگر نمی‌توانید تغییرش دهید:

# تعریف با پرانتز
point = (10, 20)
person = ("علی", 25, "تهران")

# دسترسی (از ۱!)
println(point[1])    # 10
println(person[2])   # 25

-- point[1] = 99   -- ❌ خطا! Tuple تغییرناپذیر است

تفاوت Tuple و Array

ویژگیTupleArray
تغییرپذیری❌ تغییرناپذیر✅ تغییرپذیر
نماد( )[ ]
انواع عناصرمعمولاً مخلوطمعمولاً یکسان
کاربردمقادیر برگشتی، بسته‌بندیلیست‌های پویا
سرعتسریع‌تر (کامپایل‌شده)—

باز کردن Tuple (Destructuring)

point = (10, 20)

x, y = point
println("x=$x, y=$y")   # x=10, y=20

# تعویض بدون متغیر کمکی
a, b = 1, 2
a, b = b, a
println("$a $b")   # 2 1

Tuple برای چند مقدار برگشتی

یکی از رایج‌ترین کاربردها — توابعی که چند چیز برمی‌گردانند:

function minMax(arr)
    return (minimum(arr), maximum(arr))
end

smallest, largest = minMax([5, 2, 9, 1, 7])
println("کوچک‌ترین: $smallest")   # 1
println("بزرگ‌ترین: $largest")    # 9

NamedTuple — Tuple با نام!

مثل Tuple اما هر عنصر نام دارد — بین struct و Tuple:

# تعریف با نام = مقدار
person = (name="علی", age=25, city="تهران")

# دسترسی با نام
println(person.name)    # علی
println(person.age)     # 25

# یا با ایندکس
println(person[1])      # علی
NamedTuple برای «شیء سبک» عالی است — بدون تعریف struct، داده ساخت‌یافته داشته باشید!

کاربرد عملی: پیکربندی

config = (
    host = "localhost",
    port = 8080,
    debug = true,
)

println("سرور: $(config.host):$(config.port)")
println("دیباگ: $(config.debug)")

پیمایش Tuple

person = ("علی", 25, "تهران")

for item in person
    println(item)
end

# NamedTuple
np = (a=1, b=2, c=3)
for (key, value) in pairs(np)
    println("$key = $value")
end

کجا از کدام استفاده کنیم؟

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

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