Увесь трек Julia буде вимагати, щоб ми ставилися до свого рішення як до невеликих бібліотек, тобто нам потрібно визначати функції, типи тощо, які потім перевірятиме набір тестів. Тому найпершим поняттям, яке ми розглянемо, стануть іменовані функції.
Julia - динамічна мова програмування зі строгою типізацією. Стиль програмування переважно функціональний, хоча й гнучкіший, ніж у таких мовах, як Haskell.
Не потрібно оголошувати змінну заздалегідь. Просто присвоймо значення відповідній назві:
julia> myvar = 42 # an integer
42
julia> name = "Maria" # strings are surrounded by double-quotes ""
"Maria"
Якщо значення має бути доступним у всій програмі, але не повинно змінюватися, його найкраще позначити як константу.
Якщо поставити ключове слово const перед присвоєнням, компілятор зможе згенерувати ефективніший код, ніж це можливо для змінної.
Константи також допомагають захиститися від помилок у коді.
Спроба випадково змінити значення const призведе до попередження:
julia> const answer = 42
42
julia> answer = 24
WARNING: redefinition of constant Main.answer. This may fail, cause incorrect answers, or produce other errors.
24
Зауважмо, що const можна оголосити лише поза будь-якою функцією.
Зазвичай це буде близько до початку файлу *.jl, перед визначеннями функцій.
Вони такі самі, як і в багатьох інших мовах:
2 + 3 # 5 (addition)
2 - 3 # -1 (subtraction)
2 * 3 # 6 (multiplication)
8 / 2 # 4.0 (division with floating-point result)
8 % 3 # 2 (remainder)
У Julia є два поширені способи визначити іменовану функцію:
За допомогою ключового слова function
function muladd(x, y, z)
x * y + z
end
Відступ у 4 пробіли є загальноприйнятим для читабельності, але компілятор його ігнорує.
Ключове слово end обовʼязкове.
Зауважмо, що ми могли б написати return x * y + z.
Однак функції Julia завжди повертають останній обчислений вираз, тож ключове слово return необовʼязкове.
Багато програмістів воліють усе ж таки писати його, щоб чіткіше показати свої наміри.
За допомогою «форми присвоєння»
muladd(x, y, z) = x * y + z
Найчастіше її використовують для створення стислих функцій з одним виразом.
У формі присвоєння ключове слово return ніколи не використовують.
Обидві форми рівнозначні й використовуються абсолютно однаково, тож вибираймо ту, яка читабельніша.
Щоб викликати функцію, треба вказати її назву й передати аргументи для кожного з її параметрів:
# invoking a function
muladd(10, 5, 1)
# and of course you can invoke a function within the body of another function:
square_plus_one(x) = muladd(x, x, 1)
Як і багато мов, Julia вимагає, щоб назви (змінних, функцій і багатьох інших речей) починалися з літери, за якою йде будь-яка комбінація літер, цифр і символів підкреслення.
За домовленістю назви змінних, констант і функцій пишуть малими літерами, а символи підкреслення зводять до розумного мінімуму.
У цій вправі ми напишемо трохи коду, щоб приготувати чудову лазанью з улюбленої кулінарної книги.
На нас чекають чотири завдання, усі повʼязані з часом, витраченим на приготування лазаньї.
Визначте константу expected_bake_time, яка повертає кількість хвилин, протягом яких лазанья має запікатися в печі.
Згідно з кулінарною книгою, лазанья має провести в печі загалом 60 хвилин.
julia> expected_bake_time
60
Визначте функцію preparation_time, яка приймає як аргумент кількість шарів, доданих до лазаньї, і повертає кількість хвилин, витрачених на підготовку лазаньї, якщо на кожен шар іде 2 хвилини.
julia> preparation_time(4)
8
Визначте функцію remaining_time, яка приймає як параметр фактичну кількість хвилин, які лазанья вже провела в печі, і повертає кількість хвилин, які лазаньї ще потрібно залишатися в печі.
julia> remaining_time(50)
10
Визначте функцію total_working_time, яка приймає два аргументи: перший аргумент - кількість шарів, доданих до лазаньї, а другий - кількість хвилин, які лазанья провела в печі.
Функція повинна повернути, скільки хвилин загалом ми витратили на приготування лазаньї, тобто суму часу підготовки в хвилинах і часу в хвилинах, який лазанья на цей момент провела в печі.
julia> total_working_time(3, 20)
26
Зареєструйтеся на Exercism, щоб вивчати й опановувати Julia, а також 35 концепцій128 вправ та справжнє наставництво від людей, і все це безкоштовно.