[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: function call as lvalue
- From: Richard Hundt <richardhundt@...>
- Date: Thu, 18 Feb 2010 14:34:28 +0100
Alexander Sorockin wrote:
Hi All,
I guess the most likely answer to this question is 'No', but just in case. Is there a way to implement in C a function call as an lvalue? Basically, I want my Lua program to be able to do something like this:
m = mymessage.create()
m.byte(1).bits(2, 3) = 2
No :) Well, not without hacking the Lua sources, since that doesn't make
it past the parser, so it's not supported syntax.
I know I can implement something like this:
m.byte(1).bits(2, 3).set(2)
or this:
m.byte[1].bits[2][3] = 2
But the former looks more elegant to me :)
I'd do
m.byte(1).bits(2, 3, ...)
where the last parameters are replacements, but if you really want to
index using ranges you could try:
m.byte(1).bits[{2, 3}] = 2
with the cost of creating and throwing away a table (and of course
having "bits" be a table with a __call metamethod, instead of a function).
-Rich