توابع در جولیا
تعریف تابع با 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! اصلی را تغییر میدهد!این مبحث بخشی از دوره آموزش کامل جولیا است.