Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Lua, объявить ф-цию в конце кода, вызвать в начале, Можно ли так?
фонарик
сообщение 15.7.2025, 15:45
Сообщение #1


****

Apprentice
Сообщений: 162
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 8
Пользователь №: 14.305



Здравствуйте. В интернетах начитался, что на луа можно определять функции где угодно в коде. Мне вот задумалось, что перенесу-ка я в конец кода все эти массы значений что запихиваются в массив. Чтобы сверху в коде сразу был чисто функционал и оперирование этими данными, а сами они чтобы в начале кода не мешались. Но чета никак у меня не получается так сделать. Подскажите пожалуйста, в чем проблема?

Код
--lua
-- Вызов функции в начале
myFunction()

-- Определение функции в конце
function myFunction()
    log("Hello, world!")
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение Вчера, 0:16
Сообщение #2


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22548
Пользователь №: 16.156



не эксперт, могу ошибаться, но объявлять функции можно только перед использованием. можно вынести функции в другой модуль и импортировать его первой строкой в текущем файле
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение Вчера, 6:27
Сообщение #3


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29665
Пользователь №: 11.279



Цитата
В интернетах начитался, что на луа можно определять функции где угодно в коде.

Мне подобную ересь когда-то AI пытался втереть. Вы можете обращаться в коде только к тому, что объявлено выше текущей строки. В качестве альтернативы вы можете что-то объявить в шапке, а определить позднее:
Код

--lua
local a = nil

local my_print = function()
    log(a)
end

a = 123

my_print()

Дано исключительно в виде самого элементарного примера. Лично в моей практике чаще всего приходится подобным заниматься, когда необходимо чтобы две функции могли вызывать друг-друга при каких-то обстоятельствах. Чаще всего не напрямую, а через некоторый набор взовов других функций. А как это сделать, если для видимости каждая из них должна быть выше другой? Только аналогично примеру.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение Вчера, 15:15
Сообщение #4


****

Apprentice
Сообщений: 162
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 8
Пользователь №: 14.305



Ну вот вам и ИИ, я тоже тут с одним познакомился (IMG:style_emoticons/default/dry.gif) Думал мы подружились (IMG:style_emoticons/default/friends.gif) И что он первым делом сделал? Обманул! (IMG:style_emoticons/default/fie.gif) Там я его не только про объявление функции спрашивал, еще про массивы, про перебор значений. Он мне код: а он неробит. Я грю братан, ну как так. Он ниче не знаю, все верно и совершенно, подергайте провода у модема. В итоге я сам допер, что значения массивов надо было обернуть в ковычки. Написал этому ИИ где ошибка, а он мне ну да, без кавычек луа воспринимает строки как переменные.

В общем, никто не заменит ребят тут на форуме, что всегда поделятся своими знаниями и опытом (IMG:style_emoticons/default/thanks.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 17.7.2025, 3:47
Designed by Nickostyle