Функции и переменные
Введение
Ключевая проектная философия языка программирования Wave заключается в поддержании баланса между низкоуровневой производительностью и высокоуровневой абстракцией, предоставляя эффективную и гибкую среду разработки программного обеспечения. В этом разделе представлены основные элементы, составляющие программы на языке Wave: функции и переменные.
Функции являются основными единицами, определяющими функционирование и логику программы, в то время как переменные выполняют роль хранения и управления данными, необходимыми в этом процессе. Точное понимание того, как определять и использовать функции и переменные, позволяет лучше использовать структуру и проектные намерения языка Wave.
Функции.
Функции в языке Wave представляют собой повторно используемые блоки кода, которые могут выполняться самостоятельно. Они позволяют объединять и выражать различны е действия или расчёты единым целым, и их можно вызывать по мере необходимости в рамках всей программы.
Использование функций позволяет сократить повторяющийся код и логически разделить программу, улучшая её читаемость и сопровождаемость. Они также используются для различных целей, таких как обработка вычислений, управление вводом-выводом и разделение логики.
В Wave функции определяются с помощью ключевого слова fun, за которым следуют имя функции, список параметров и тело функции, заключённое в фигурные скобки {}.
Определение функций
Наиболее базовая форма определения функции в языке Wave выглядит следующим образом.
fun main() {
// Напишите свой код здесь
}
Функция main является точкой входа в выполнение программы, и в каждой программе на Wave должна быть как минимум одна функция main.
Программа начинает выполнение именно с этой функции.
Функции могут иметь параметры в зависимости от необходимости, а также возвращать результаты вычислений или значения в место, откуда были вызваны. При наличии возвращаемого значения необходимо указать тип возврата в объявлении функции.
Пример: простая функция
Следующий пример представляет собой простую функцию, которая получает два целых числа и возвращает их сумму.
fun add(a :i32, b :i32) -> i32 {
return a + b;
}
fun main() {
var result = add(5, 7); // добавить вызов функции
println(result); // Выход: 12
}
В этом примере функция add принимает два целочисленных параметра a и b, суммирует их и возвращает результат.
Функция main вызывает функцию add, сохраняет возвращённое значение в переменной и выводит его.
Таким образом, функции инкапсулируют определенные действия и позволяют повторно использовать их в различных частях программы.
Переменные
Переменные используются для хранения и обработки данных в программе. Wave спроектирован так, чтобы при объявлении переменных чётко различать изменяемые и неизменяемые переменные, раскрывая намерения по изменению данных на уровне кода.
Это позволяет сделать изменение состояния программы более понятным и уменьшает количество ошибок, связанных с непреднамеренными изменениями значений.
Изменяемые переменные
В Wave переменные по умолчанию являются изменяемыми (mutable). То есть значение можно изменить во время выполнения программы, даже после единожды сделанного объявления.
Изменяемые переменные объявляются с помощью ключевого слова var.
var x :i32 = 10;
x = 20;
В этом коде переменная x имеет начальное значение 10, которое впоследствии может быть изменено на 20.
Подобным образом для данных, состояние которых требуется менять, используются изменяемые переменные.
Неизменяемые переменные
Если переменная объявлена как неизменяемая (immutable), её значение нельзя изменить после начального присвоения. Неизменяемые переменные объявляются с помощью ключевого слова let.
let y :i32 = 5;
// y = 10; // Ошибка: Неизменяемые переменные не могут изменить свое значение.
Неизменяемые переменные гарантируют, что их значения не изменяются, что способствует повышению стабильности и предсказуемости программы. Рекомендуется использовать неизменяемые переменные для неизменяемых данных, которым не требуется изменение значений.
В Wave также можно использовать ключевое слово let вместе с mut, чтобы явно разрешить изменяемость.
let mut y :i32 = 5;
y = 10;
Хотя переменная была объявлена с помощью let, ключевое слово mut позволяет из менить её значение.
Пример объявления переменных
Ниже представлен пример объявления переменных различных типов, как изменяемых, так и неизменяемых.
var x :i32 = 10;
let y :f64 = 3.14159;
var name :str = "Wave";
let is_active :bool = true;
В этом примере x и name являются изменяемыми переменными, а y и is_active — неизменяемыми.
В Wave чёткое различие между var и let раскрывает на уровне кода возможность изменения данных.
Правильное разделение изменяемых и неизменяемых переменных позволяет поддерживать согласованность данных и создавать более надёжные и предсказуемые программы.
