[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Returning a ellipses
- From: HyperHacker <hyperhacker@...>
- Date: Thu, 8 Dec 2011 20:39:11 -0700
On Thu, Dec 8, 2011 at 20:37, PROXiCiDE <saiyuk7@gmail.com> wrote:
> Xavier Wang <weasley.wx <at> gmail.com> writes:
>
>>
>> Maybe you can do something like this:
>>
>> function Test(s, a, ...)
>> -- do something to calculate the first field
>> local ret = --....
>> return ret, Test(s, ...)
>> end
>>
>> ---------- Forwarded message ----------
>> From: PROXiCiDE <saiyuk7 <at> gmail.com>
>> Date: 2011/12/9
>> Subject: Returning a ellipses
>> To: lua-l <at> lists.lua.org
>>
>> I want to pass a function that supports
>> ellipses "..." and return several of
>> them into different variables..
>>
>> example
>>
>> function Test(...)
>> end
>>
>> a,b,c,d,e = Test(1,2,3,4,5)
>>
>> Reason for this being, i want to be able to
>> read a structured data into variables...
>>
>> example reason
>>
>> magic,version, headersize,directorycount,directorylocation =
>> ReadDirectory(f,"s",16,32,32,32)
>>
>> S = obviously a String
>> 16 = Int16
>> 32 = Int32
>>
>> I would actually parse the the ellipses using the
>> "var = select(i,...)" from a "for" statement
>>
>> But what i cant understand is how do i seperate
>> these into different variables
>> that are returned
>>
>>
>
>
> Well Test will be reading data from a binary file
> into these specific variables, the ellipses
> would hold the size of the data to be read from the file
>
> example
>
> function Test(f,...)
> for i=1,select("#",...) do
> local v = select(i,...)
> if (type(v) == "number") then
> store_var = FileReadSize(f,v)
> end
> return -- Store Variables here
> end
>
> a,b,c = Test(f,32,16,32)
>
>
>
So you want to store your return values in a table, and unpack them at the end.
function Test(f,...)
local ret = {}
for i=1,select("#",...) do
local v = select(i,...)
if (type(v) == "number") then
ret[#ret+1] = FileReadSize(f,v)
end
return unpack(ret)
end
--
Sent from my toaster.