Итак, вы узнали, как создавать константы и переменные для хранения и использования значений, а также как принимать решения в коде, используя выражение if и такие операторы, как and и or.
Теперь пришло время научиться писать код, который будет легко применим повторно.
Помните из Урока 2, что выражение — это наименьшая единица кода, которая выдаёт результат? И что, когда выражение выполняется и выдаёт значение, это значение является результатом выражения?
Вы можете воспользоваться этими знаниями, чтобы сделать код более эффективным.
Выражения можно комбинировать с другими выражениями для создания функций, а функции можно использовать в коде повторно, без необходимости переписывать код каждый раз.
Использование выражений в функциях
Функция (также называемая подпрограммой) — это повторно используемый код, содержащий инструкции для выполнения действия или для получения выходных данных на основе входных данных.
Функции состоят из объединённых выражений.
Чтобы определить функцию, требуется следующее:
- уникальное имя, или идентификатор;
- тип информации, возвращаемой в качестве результата;
- описание действий при вызове функции.
Вот базовый синтаксис функции:
name() : type =
codeblock
Вы узнаете больше о блоках кода в следующем уроке, а сейчас вам просто нужно знать, что блок кода — это то место, куда помещаются выражения, используемые для построения функции.
Функции и вызовы функций
Функция — это, по сути, последовательность выражений, которой присвоено определённое имя.
Программа использует функцию, вызывая эту функцию по имени. Вызов обращается к этой функции (активирует её). Это и есть вызов функции.
Это означает, что вместо многократного повторения всех выражений, которые составляют функцию, их можно сгруппировать в именованную функцию, и тогда каждый раз, когда функция будет вызываться в программе, компьютер будет обращаться к ней и выполнять содержащиеся в ней выражения.
Например, вместо CoinsPerMousetrap, всегда имеющего значение 100, можно написать код, который будет изменять значение, выбирая случайную величину при каждом запуске.
В приведённом ниже примере задано выражение для генерации случайного числа от одного до десяти с использованием выражения GetRandomInt(1, 10).
Вот из чего состоит это выражение:
GetRandomInt() |
Это встроенная в Verse функция, которая работает практически аналогично своему написанию, то есть генерирует случайное целое число. |
1, 10 |
Это диапазон, из которого берётся генерируемое число. Если задать диапазон 20, 50, то функция сгенерирует число от двадцати до пятидесяти. Обратите внимание, что диапазон задаётся в скобках (), которые являются частью названия этого выражения. |
Это вызов функции, потому что он сообщает компьютеру, что нужно вызвать функцию, которая получает случайное целое число в заданном вами диапазоне от 1 до 10.
Если вы хотите использовать функцию в коде, её можно вызвать по имени. Всякий раз при вызове GetRandomInt() будет генерироваться новое случайное число.
Эту функцию можно использовать, чтобы случайным образом изменять цену мышеловки:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }
OnBegin<override>()<suspends> : void =
# Инициализируем Coins значением 500. Поскольку это переменная, её можно будет изменить позже.
var Coins : int = 500
# Инициализируем CoinsPerMousetrap случайным целым значением от 1 до 100
CoinsPerMousetrap : int = GetRandomInt(1, 100)
# Запишем в журнал текущее значение Coins (500).
Print("Начальное количество монет {Coins}.")
# Уменьшим Coins на CoinsPerMousetrap и запишем новое значение в журнал.
set Coins = Coins - CoinsPerMousetrap
Print("После покупки одной мышеловки осталось {Coins} монет.")
Обратите внимание, что почти каждая строка кода в приведённом выше примере имеет комментарий, поясняющий, что делает этот код. Это полезно как для вас, когда вы вернётесь к своему коду позже, так и для других программистов, которые захотят дополнить или изменить написанный вами код.
Методы
Помните, в Уроке 2 вы узнали, как тип определяет, какие операции можно выполнять над значениями, хранящимися в переменной или константе? Типы влияют и на другое.
Помимо принадлежащих им операций у них есть и принадлежащие им функции. Эти функции известны как методы, и их вызывают особым образом.
Для вызова метода недостаточно просто указать имя (например, Print() или GetRandomInt()). Вызов метода должен начинаться с имени переменной (или константы), за которым следует ., а затем имя метода. Например, вызов метода Pounce() переменной Cat будет выглядеть так:
Cat.Pounce()
Классы
Класс — это шаблон, который можно использовать для создания объектов с похожим поведением и свойствами. Класс — это составной тип, то есть он состоит из набора данных других типов.
Когда вы определяете класс, данные этого класса могут быть унаследованы любыми подклассами.
Таким образом, метод — это функция, прикреплённая к классу. Из-за этого не каждый метод работает с каждым типом. Метод должен быть объявлен в определении класса для этого типа или в классе, от которого этот тип наследуется. Если вам ещё не всё понятно, не беспокойтесь — это всего лишь краткое введение. Вы узнаете больше о классах позже.
Выводы
- Функция — это именованная последовательность выражений, которую можно использовать повторно.
- Функции также называются подпрограммами.
- Функции экономят время и уменьшают ошибки, поскольку вам не нужно повторно вводить (или хранить) несколько строк одинакового кода.
- Когда вы повторно используете функцию в коде, вы делаете вызов функции.
- Метод — это функция, принадлежащая к определённому типу и вызываемая для переменной или константы этого типа.
- Классы — это составные типы, которые позволяют комбинировать данные из других типов, а затем передавать поведение и свойства подклассам.