🦊 FoxWiki

Параметры и возвращаемые значения

Функции всегда делали одно и то же. Но что если нужна функция которая копает тоннель разной длины? Или считает расстояние между разными точками?

Для этого функции принимают параметры — данные переданные снаружи. И возвращают результат — значение, которое можно использовать дальше.


Параметры

Параметры — это переменные, которые функция получает при вызове:

Редактор Lua
1
2
3
4
5
6

Внутри функции name — обычная локальная переменная. При каждом вызове она получает новое значение.


Несколько параметров

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Возвращаемые значения: return

return завершает функцию и возвращает значение вызывающему коду:

Редактор Lua
1
2
3
4
5
6
7
Редактор Lua
1
2
3
4
5
6
7
8
9
10

Несколько возвращаемых значений

В Lua функция может вернуть сразу несколько значений через запятую:

Редактор Lua
1
2
3
4
5
6
7
8

Именно так работают многие встроенные функции ComputerCraft:

Редактор Lua
1
2
3

return прерывает выполнение функции

return не только возвращает значение — он немедленно завершает функцию. Это используют для ранних выходов:

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Параметры по умолчанию

Lua не поддерживает параметры по умолчанию напрямую, но можно сделать через or:

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11

Функции как значения

В Lua функции — это полноценные значения. Их можно передавать как параметры:

Редактор Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

🚀 Задания

Задание 1 Напиши функцию repeat(action, times), которая принимает функцию action и число times, и вызывает action указанное количество раз. Используй её: repeat(turtle.forward, 10).

Задание 2 Напиши функцию fuelStatus(), которая возвращает три значения: уровень топлива, максимум и процент заполненности. Выведи все три.

Задание 3 Напиши функцию findItem(name), которая проходит по слотам 1–16 и возвращает номер слота с предметом с именем name, или nil если не нашла.

Задание 4 Напиши функцию buildWall(width, height). Она принимает размеры стены и строит её из блоков в первом слоте. Используй вложенные циклы for. Протестируй с разными размерами.

Задание 5 Перепиши функцию digTunnel из прошлых заданий: добавь параметр onProgress — функцию, которая вызывается после каждого прокопанного блока с текущим номером блока. Это позволяет вызывающему коду следить за прогрессом.

НазадВложенные условия
ДалееВывод текста