آرگومانهای تابع در جولیا
آرگومانهای 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="★ "))
جدول خلاصه
| نوع | تعریف | فراخوانی |
|---|---|---|
| Positional | f(a, b) | f(1, 2) |
| پیشفرض | f(a, b=10) | f(1) یا f(1, 5) |
| Keyword | f(a; k=1) | f(1, k=5) |
| Varargs | f(args...) | f(1, 2, 3, ...) |
این مبحث بخشی از دوره آموزش کامل جولیا است.