una todos personalizadas para los libros hacer función funciones funcion financieras cómo crear con function variables lua

function - todos - Lua ¿Cómo crear una función personalizada que se pueda usar en variables?



funciones personalizadas en excel pdf (1)

Según su descripción, parece que busca algo similar a esta sintaxis:

local lines = readFile(file) lines:readArgs(1) -- parse first line {"this", "is", "some", "input"}

Metatables puede ayudar con esto:

local mt = { __index = {} } function mt.__index.readArgs(self, linenum) if not self[linenum] then return nil end local args = {} for each in self[linenum]:gmatch "[^ ]+" do table.insert(args, each) end return args end

Tendrá que hacer un pequeño cambio en su readFile y adjuntar ese metatabla a las lines que está devolviendo:

function readFile(file) -- ... return setmetatable(lines, mt) end

Editar : para responder el comentario de OP, una llamada como esta:

lines:readArgs(1)

es solo azúcar sintáctica para:

lines.readArgs(lines, 1)

Cuando la máquina virtual lua ejecuta la línea anterior, sucede lo siguiente:

  • ¿Las lines la mesa tienen una clave readArgs ?
  • En caso afirmativo, utilice su valor correspondiente, como es habitual para la parte restante de la declaración.
  • Si no, ¿las lines tienen un índice metatable .__? En este caso, sí, por lo que se utiliza la función asignada a __index.readArgs .
  • readArgs ahora se llama con los parámetros anteriores: self = lines, linenum = 1

Aquí no hay nada especial, es solo un parámetro regular; puedes ponerle el nombre que quieras realmente.

Con métodos como io.close (), puede usarlo así:

file:close()

¿Hay alguna manera de crear una función personalizada que funcione de esa manera, donde pueda llamarla a una variable?

Para mí, estoy tratando de usarlo para separar argumentos de un archivo de texto usando string.find para buscar espacios

Entonces en el archivo de texto parece

this is some input

Y la función readArgs () debería devolver toda la línea en una tabla con args [1] = "So", args [2] = "in", args [3] = "the" etc. después de ser llamado en la línea

function readFile(file) local lines = {} assert(io.open(file), "Invalid or missing file") local f = io.open(file) for line in f:lines() do lines[#lines+1] = line end return lines end function readArgs(line) -- This is the function. Preferably call it on the string line --Some code here end