[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Location of function declaration??
- From: Rici Lake <lua@...>
- Date: Thu, 21 Oct 2004 22:50:59 -0500
On 21-Oct-04, at 10:22 PM, Mike Crowe wrote:
I see I have to declare function before using.
No you don't, unless you are writing mutually recursive local functions.
However, it appears that the function executes once as the system
runs. I had to put in the statement below "if tab[1] then" to catch
the first run with a nil. Shouldn't the function only been called
when I call it below?
Yes, so I have no idea what you are doing to cause it to run.
I can only imagine what you are doing, but here's an easy sample:
local function printTable(tab)
for i, val in ipairs(tab) do
print(" Token "..i..": "..val)
end
end
-- This just splits the line on whitespace --
local function parseLine(line)
local t = {}
for w in string.gfind(line, "([%S]+)") do
table.insert(t, w)
end
return t
end
-- Test run on this very program
local lineno = 1
for line in io.lines("test.lua") do
local t = parseLine(line)
print("Line "..lineno)
printTable(t)
lineno = lineno + 1
end
-- Partial output (try it yourself):
rlake@freeb:~$ lua test.lua
Line 1
Token 1: local
Token 2: function
Token 3: printTable(tab)
Line 2
Token 1: for
Token 2: i,
Token 3: val
Token 4: in
Token 5: ipairs(tab)
Token 6: do
Line 3
Token 1: print("
Token 2: Token
Token 3: "..i..":
Token 4: "..val)
Line 4
Token 1: end
Line 5
Token 1: end