توابع در جولیا

تعریف تابع با function و شکل کوتاه ریاضی، return و فراخوانی

تابع چیست؟

تابع (Function) بلوکی از کد است که یک‌بار تعریف و بارها فراخوانی می‌شود. جولیا دو شکل تعریف تابع دارد!

شکل ۱: استاندارد با function

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

println(greet("علی"))

شکل ۲: کوتاه ریاضی — مخصوص جولیا!

# مثل نوشتن فرمول ریاضی
f(x) = x^2 + 2x + 1
double(x) = 2x

println(f(3))      # 16
println(double(5)) # 10
شکل کوتاه برای توابع تک‌خطی عالی است — جولیا برای ریاضیات طراحی شده و اینجا مشخص است!

return — مقدار برگشتی

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

# return اختیاری است — آخرین عبارت برگردانده می‌شود
function add2(a, b)
    a + b   # همین برگردانده می‌شود!
end

println(add(2, 3), " ", add2(2, 3))   # 5 5

return زودهنگام

function checkAge(age)
    if age < 0
        return "سن نامعتبر!"
    end
    if age >= 18
        return "بزرگسال"
    end
    return "کودک"
end

println(checkAge(-5))   # سن نامعتبر!
println(checkAge(25))   # بزرگسال

توابع بدون مقدار برگشتی

function sayHello(name)
    println("سلام $name")
    # nothing برگردانده می‌شود
end

result = sayHello("دنیا")
println(result)   # nothing

توابع با چند عملیات

function bmi(weight, height)
    return weight / height^2
end

function classify(bmiValue)
    if bmiValue < 18.5
        return "کم‌وزن"
    elseif bmiValue < 25
        return "نرمال"
    else
        return "اضافه وزن"
    end
end

myBmi = bmi(70, 1.75)
println("BMI: ", round(myBmi, digits=1))
println(classify(myBmi))

توابع در جولیا شهروند درجه‌یک‌اند

# تابع در متغیر
g = greet
println(g("مریم"))

# تابع در آرایه
funcs = [x -> x^2, x -> x^3]   # بعداً می‌بینیم!

# تابع به تابع دیگر
function applyTwice(f, x)
    return f(f(x))
end

println(applyTwice(double, 5))   # 20

عملگر ! برای توابع تغییردهنده

# توابعی که آرگومان را تغییر می‌دهند با ! تمام می‌شوند
arr = [3, 1, 2]

sort!(arr)   # خود آرایه را مرتب می‌کند
println(arr)   # [1, 2, 3]

# در برابر:
arr2 = [3, 1, 2]
sorted = sort(arr2)   # آرایه جدید
println(arr2)   # [3, 1, 2] — دست‌نخورده!
println(sorted)
قرارداد ! در جولیا خیلی مهم است: sort نسخه جدید می‌دهد، sort! اصلی را تغییر می‌دهد!

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

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