если получили nil, то вы его не открыли --------------- если не nil то закрыть io.close(out_file)
в том то и дело, что нельзя открыть файл, который уже открыт, поэтому его нужно закрыть (по строковому имени) а затем снова открыть. как это сделать?
Как закрыть файл по его полному пути+имени (строка)
Пользователь
Сообщений: Регистрация: 09.06.2022
18.06.2022 21:14:31
Допустим, файл уже был открыт до запуска скрипта, тогда
out_file=io.open(FileFullName,"a+") --> nil
как закрыть этот файл с именем FileFullName (строковое)?
Ошибка: attempt to call a nil value (global 'foo'), непонятная ошибка в вызове пользовательской функции
Пользователь
Сообщений: Регистрация: 09.06.2022
09.06.2022 20:07:58
Цитата
Владимир написал: , При чём тут вооще "из какой области вызывается выражение"? Эта дура его НЕ ВИДИТ! Глобальные переменные у меня действительно объявлены до main, но, полагаю, и это не имеет значения (в смысле, НЕ ДОЛЖНО иметь значения). Я не помню, есть ли у меня неинициализированные глобальные переменные (скорее всего, нет), но, полаю, и это не должно иметь никакого значения - здесь переменные глобальные по умолчанию (что есть ещё один идиотизм языка). Я же говорил не о переменных, а о функциях, которые по определению "объявлены за пределами main".
Чо ещё за "body" здесь нарисовалось? :: ЧАВО???!!! Что, ФУНКЦИИ "объявляются внутри main"?! Воистину, программисты вымерли!
, Лапуль, мне НАСРАТЬ на всю эту клиническую мутоту с потоками, которая вдарила в головожопы создателей этого, с позволения сказать, "языка". Я в своё время потратил две или три недели, чтобы гарантированно перенести все операции именно в поток main (три стека для этого пришлось завести!), и с тех пор горя не знаю. Так В ГРОБУ я видел такую "матчасть" - учите сами!
Вы интересовались откуда взялось "боди" - об этм можно узнать из первых страниц документации по Qlua
в остальном, увы, не знаю как вам можно помочь...
Ошибка: attempt to call a nil value (global 'foo'), непонятная ошибка в вызове пользовательской функции
Пользователь
Сообщений: Регистрация: 09.06.2022
09.06.2022 17:18:56
например, так работает: function main() PrintDbgStr(tostring(foo())) -->1 end
function foo() return 1 end
а так - нет:
function main()
PrintDbgStr(tostring(foo()))-->attempt to call a nil value (global 'foo')
function foo() return 1 end
end
Ошибка: attempt to call a nil value (global 'foo'), непонятная ошибка в вызове пользовательской функции
Пользователь
Сообщений: Регистрация: 09.06.2022
09.06.2022 17:12:44
Цитата
Владимир написал: , Как это "в момент вызова foo она еще не определена"? У меня в скрипте первой функцией стоит main, а за ней ещё десятка два, обычно по алфавиту. Всегда все всё прекрасно видят. Да и Квик перед запуском делает что-то вроде компиляции кода.
Это зависит из какой области вызывается выражение
Если вызов переменной (функции) происходит из main() а сама переменная объявлена за пределами main() (например в body() или во внешнем подключенном файле), то ошибки не будет, тк код внутри main() выполняется после кода из body()
Но если объявление также как и вызов внутри main() то порядок имеет значение - сперва объявление, потом обращение.
Ошибка: attempt to call a nil value (global 'foo'), непонятная ошибка в вызове пользовательской функции
Пользователь
Сообщений: Регистрация: 09.06.2022
09.06.2022 15:48:21
Цитата
Nikolay написал: В момент вызова foo она еще не определена. Код в теле скрипта выполняется построчно вниз, определяя контекст.
Благодарю)
Ошибка: attempt to call a nil value (global 'foo'), непонятная ошибка в вызове пользовательской функции
Пользователь
Сообщений: Регистрация: 09.06.2022
09.06.2022 14:55:30
Где ошибка?
MyVar = foo(1,2)-->attempt to call a nil value (global 'foo')