Перейти к содержимому
  • 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".

 

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


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

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

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

 

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

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


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

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

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

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


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

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

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

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


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

 

Есть код для 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

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

 

 

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...