lua-users home
lua-l archive

Re: Next Lua (5.2) feature request : slicing

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


t = {"apple", "banana", "cherry", "date" }
p = { 2,4,3,4 }
pick( t, unpack(p) )
Forgetting that, too? ;) That is, variable argument lists can be built at runtime, and it's fairly smooth & quick, too.
On 2006年11月22日 20:43:45 GMT
 "Andy Stark" <AStark@blackpoolsixth.ac.uk> wrote:
Lua list <lua@bazar2.conectiva.com.br> writes:
not using this syntax i hope, because it would make it impossible to use tables as keys.
what's wrong with using a explicit call?
function pick (t,...)
end
t = {"apple", "banana", "cherry",
"date"}
pick (t, 2, 4, 3, 4) => { "banana", "date",
"cherry", "date"}
Ahem... yes, you're right - I forgot that the operation of using a table
as a key was already defined by default.
There's nothing wrong in principle with using a function to index a table in this way but it must be possible to pass this function a table rather than just a variable length argument list. A table can be generated at runtime whereas an argument list is fixed in the source code. Another approach to multiple indices might be to define the function call operator ( ... ) for tables so that the values passed are treated as subscripts. Slices could be modelled using a pair of integer arguments:-
 t = {"apple", "banana", "cherry", "date"}
 x = t( 1, 2) -- Gives { "apple", "banana" }
...and when the argument is a table, it could give the APL-style array
indexing behaviour we have been discussing:-
 firstAndLast = { 1, 4 }
 x = t( firstAndLast )
...and then of course we would also have:-
 x = t{ 1, 4 }
&.
#####################################################################################
This e-mail message has been scanned for Viruses and Content and cleared by MailMarshal.
The Blackpool Sixth Form College.
#####################################################################################

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