Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

  • 0
eu_tomat

Выход из программы на CC.

Вопрос

Есть код для ComputerCraft:

function getPeripheral( p_type, p_side )
  if( peripheral.isPresent(p_side) )then
    if( peripheral.getType(p_side)==p_type )then
      return peripheral.wrap(p_side)
    end
  end
  print( "Error: "..p_type.." not found at "..p_side.." side" )
  exit()
end

Смысл функции состоит в том, что она проверяет наличие нужной периферии с определенной стороны и в случае успеха возвращает соответствующий объект. В противном же случае функция должна сообщить об ошибке и завершить работу программы.

 

Вопрос - как завершить работу программы правильно.

 

return не подходит, т.к. происходит выход лишь из функции.

os.shutdown полностью выключает компьютер, убирая сообщение об ошибке.

Другие известные мне варианты вроде приведенного в коде выдают дополнительную ошибку  "attempt to call nil".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 ответов на этот вопрос

Рекомендованные сообщения

  • 0

Да, это уже лучше. Но хотелось бы оставить только тот вывод, что я хочу.

 

Просто поставь после своего print('что-то') команду error() с пустыми скобками.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

error(smth) вместо print() в конце юзать?..

Да, это уже лучше. Но хотелось бы оставить только тот вывод, что я хочу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Просто поставь после своего print('что-то') команду error() с пустыми скобками.

То, что доктор прописал. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

Есть код для ComputerCraft:

function getPeripheral( p_type, p_side )
  if( peripheral.isPresent(p_side) )then
    if( peripheral.getType(p_side)==p_type )then
      return peripheral.wrap(p_side)
    end
  end
  print( "Error: "..p_type.." not found at "..p_side.." side" )
  exit()
end

 

 

 

Можно так:

m = peripheral.find('modem')
if m ==nil tnen error('Fatal Error. Modem not found!') end

"Финдом" можно автоматически искать и инициализировать любое ВРАП устройство, реактор это или АМИ, или чатбокс, не важно, с какой оно стороны прилеплено. 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×