lua-users home
lua-l archive

Re: Location of function declaration??

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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

AltStyle によって変換されたページ (->オリジナル) /