Что оно делает?для i = 1 выберите ('#', ...) - PullRequest
5 голосов
/ 03 августа 2011

Я столкнулся со следующим кодом в проекте, с которым я работаю. я не понимаю итерационную часть цикла for. Что такое функция select ()?

function _log (str,...)
  local LOG="/tmp/log.web"
  for i=1,select('#',...) do
    str= str.."\t"..tostring( select(i,...) )
  end
os.execute("echo \"".. str .."\" \>\> " .. LOG )
end

1 Ответ

9 голосов
/ 03 августа 2011

Из руководства Lua:

If index is a number, returns all arguments after argument number
index.  Otherwise, index must be the string "#", and select returns
the total number of extra arguments it received.

Lua имеет несколько аргументов , которые вы можете преобразовать в стол, если вам действительно нужно:

function multiple_args(...)
  local arguments = {...}  -- pack the arguments in a table
  -- do something --
  return unpack(arguments) -- return multiple arguments from a table (unpack)
end

Наконец, если вы передадите «#» в качестве индекса, функция вернет счетчик нескольких предоставленных аргументов:

print(select("#")) --> 0
print(select("#", {1, 2, 3})) --> 1 (single table as argument)
print(select("#", 1, 2, 3)) --> 3
print(select("#", {1,2,3}, 4, 5, {6,7,8}) --> 4 (a table, 2 numbers, another table)

См. веб-сайт .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...