0
Я пытаюсь распечатать информацию в виде таблицы, где расстояние между никогда не меняется, вроде как setw от C++C++ эквивалент для Lua?
Я пытаюсь распечатать информацию в виде таблицы, где расстояние между никогда не меняется, вроде как setw от C++C++ эквивалент для Lua?
Вы можете использовать string.format()
. Ссылка на форматирование такая же, как в ISO sprintf()
и printf()
. Для быстрой справки вы можете использовать, например. this website.
print(string.format("%10d%10d%10d", 114, 523, 15224))
приведет:
114 523 15224
В принципе вы можете пойти с (для целых чисел):
function printTable(t, length)
for _,row in pairs(t) do
local format = ""
for i=1,#row do format = format .. "%" .. length .. "d" end
print(string.format(format, table.unpack(row)))
end
end
Это не самый эффективный способ, но он будет делать работу:
> S = {{432, 324, 5325, 4356}, {4325, 5643, 223, 543}, {234, 1, 23, 656}}
> printTable(S, 8)
432 324 5325 4356
4325 5643 223 543
234 1 23 656
'print' также автоматически добавляет вкладку между строкой представление его аргументов, например. 'print (114, 523, 15224)' будет выводить '114 \ t523 \ t15224'. Вы можете включить в ответ способ распаковать таблицу (я не уверен, что это необходимо в вопросе, но, тем не менее,). – user6245072
Действительно, это добавляет табулатуру, но это не так, как работает 'setw'. Другое дело, что он не сделает их равными в виде таблицы, которые OP хотел достичь, @ user6245072. – Green
Правильно, я не совсем понял, что у него должно получиться, но новый отредактированный ответ помогает. +1 – user6245072