Вопрос по синтаксису Lua на пару строчек

Страницы: 1
RSS
Вопрос по синтаксису Lua на пару строчек, Встретил в справочнике такое вот:
 
Код
local file,err = io.open( filename, "wb" )
      if err then return err end
Отсюда вопрос: разве когда-нибудь переменная err в этом коде получит значение отличное от null?
 
читаем документацию:
It returns a new file handle, or, in case of errors, nil plus an error message.
 
error message
 
Переменная err принимает второе возвращаемое функцией io.open() значение.

Второе значение, возвращаемое функцией - описание ошибки
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Спасибо, я думал там одно возвратное. Извиняюсь, невнимателен.
 
Николай Бехтерев,
Код
-- во-первых, Lua-функции могут возвращать несколько значений. К этому привыкаешь не сразу.
function f()
  return 1, "test", 5;
end

-- во-вторых все результаты одной функции можно перенаправить в другую
local f = io.open("log.log", "w+");
f:write(f())
-- выведет "1test5" ( то же самое, что и вызов io:write(1,"test",5); )

-- в-третьих, для обработки ошибок связанных с открытием файлов и не только, в Lua есть специальная функция assert
local f = assert(io.open("log.log", "w+"));
-- её алгоритм эквивалентен следующему:
function assert_alg(success, message)
    if not success then
        error(message);
    end
end

-- также assert удобно использовать для проверки правильности программы
assert(qty > 0, "Объём должен быть больше 0");
-- в случае, если условие ложно, выведелся ошибка "Объём должен быть больше 0"
Про ф-цию error() подробно я писал здесь: https://forum.quik.ru/messages/forum10/message13841/topic1225/#message13841
Страницы: 1
Читают тему
Наверх