XyPMA_ 0 Опубликовано: 24 июня, 2018 Знаю, такая тема уже была, но мне это не подходит. Дело в том, что команда modem.open() принимает только цифровые значения, а спомощью io.read() получаем string. Вот это кусочек кода: local hz = io.read() modem.open(hz) При запуске выдает ошибку о плохом аргументе. Как это можно обойти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vx13 2 271 Опубликовано: 24 июня, 2018 tonumber(arg) — конвертирует аргумент arg в число; вернёт nil, если конвертация не возможна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zed 133 Опубликовано: 24 июня, 2018 (изменено) local n = tonumber(io.read()) ============================= local k = io.read() local n = tonumber(k) --я бы советовал ещё тогда нужно делать проверку if ~n then print("Не удалось преобразовать переменную k: ".k." в число.") os.exit() end ============================== local n = io.read() local k = n + 0 Изменено 24 июня, 2018 пользователем Zed 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 25 июня, 2018 (изменено) Если тебе надо передать значение hz с одного конца карты в другой(или может - только в соседнюю комнату,или ещё куда ты там хочешь). То алгоритм, думаю, может выглядеть так : 1. Ловим строковую переменную. 2. Преобразуем все символы в числа в соответствии с UTF-8(ASCII, КОИ-8 или что там у тебя ) 3. Пересылаем. 4. Производим обратное преобразование. P.S. И никаких тебе ... "плохих аргументов". Изменено 25 июня, 2018 пользователем davial Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Знаю, такая тема уже была, но мне это не подходит.
Дело в том, что команда modem.open() принимает только цифровые значения, а спомощью io.read() получаем string.
Вот это кусочек кода:
local hz = io.read()
modem.open(hz)
При запуске выдает ошибку о плохом аргументе.
Как это можно обойти?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах