آرگومان‌های تابع در جولیا

آرگومان‌های positional، keyword، مقادیر پیش‌فرض و varargs

انواع آرگومان در جولیا

جولیا سیستم آرگومان قدرتمندی دارد — سه نوع اصلی:

۱. آرگومان‌های Positional (موقعیتی)

به ترتیب پاس داده می‌شوند:

function power(base, exp)
    return base ^ exp
end

println(power(2, 10))   # 1024
-- println(power(10, 2))  -- ترتیب مهم است!

۲. مقادیر پیش‌فرض

function greet(name, greeting="سلام")
    return "$greeting $name!"
end

println(greet("علی"))              # سلام علی!
println(greet("علی", "درود"))      # درود علی!

۳. آرگومان‌های Keyword

با نام پاس داده می‌شوند — بعد از ;:

function makeProfile(name; age=0, city="نامشخص")
    return "$name، $age ساله، از $city"
end

println(makeProfile("علی"))
println(makeProfile("علی", age=25))
println(makeProfile("مریم", city="تهران", age=30))
آرگومان‌های keyword ترتیب ندارند و با نام صدا زده می‌شوند — برای توابع با گزینه‌های زیاد عالی‌اند!

ترکیب همه!

function createOrder(item, quantity=1; discount=0, shipping=true)
    price = 100 * quantity
    price = price - (price * discount)
    if shipping
        price += 20
    end
    return "$quantity × $item = $price تومان"
end

println(createOrder("کتاب"))
println(createOrder("کتاب", 3))
println(createOrder("کتاب", 3, discount=0.1, shipping=false))

Varargs — آرگومان‌های متغیر

با ... هر تعداد آرگومان بگیرید:

function mySum(args...)
    total = 0
    for a in args
        total += a
    end
    return total
end

println(mySum(1, 2, 3))         # 6
println(mySum(1, 2, 3, 4, 5))   # 15

انتقال آرایه به varargs با splat

nums = [3, 7, 1, 9]

# max با چند آرگومان
println(max(nums...))   # مثل max(3, 7, 1, 9) → 9
عملگر ... در فراخوانی یعنی «پخش کن» (splat) — آرایه را به آرگومان‌های جدا تبدیل می‌کند!

مثال کامل: تابع گزارش

function report(title, values...; separator=", ", prefix="→")
    local result = prefix * title * ": "
    result *= join(values, separator)
    return result
end

println(report("نمرات", 18, 20, 16))
println(report("میوه‌ها", "سیب", "موز"; separator=" | "))
println(report("تک", 42; prefix="★ "))

جدول خلاصه

نوعتعریففراخوانی
Positionalf(a, b)f(1, 2)
پیش‌فرضf(a, b=10)f(1) یا f(1, 5)
Keywordf(a; k=1)f(1, k=5)
Varargsf(args...)f(1, 2, 3, ...)

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

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