lua-users home
lua-l archive

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


But a switch statement in most script languages (like in _javascript_) is syntactic sugar for if/else! That has always been the argument from the Lua team to why there is no switch statement in Lua. Not like for example in C where it is in fact a computed goto.


On Wed, Jun 11, 2014 at 10:23 AM, Andrew Starks <andrew.starks@trms.com> wrote:



On Wed, Jun 11, 2014 at 1:42 AM, Axel Kittenberger <axkibe@gmail.com> wrote:
Iterators are not bound to for loops.

for k, v in ipairs( t )
do
    print(k, v )
end

is syntactic sugar for:

local it = ipairs( t )
local k, v = it( t, 0 )
while k ~= nil
do
    print(k, v )
    k, v = it( t, k )
end

is syntactic sugar for:

local it = ipairs( t )
local k, v
k, v = it( t, 0 )
::loop::
print(k, v )
k, v = it( t, k )
if( k ~= nil )
then
    goto loop
end

I think that in order for one thing to be the "syntactic sugar" of another, they need to do the same thing, not just have the same outcome. A switch statement wouldn't be sugar for an if/else. A "repeat until" loop isn't sugar for a while loop or a for loop. They over lap, and perhaps one can do without the other if at least one is present. They are not sugar.


Examples of sugar:

local x
x = function(...)
 --do stuff
  return x(...)
end

--is sugar for

local function x(...)
 ...


`local x:y(args)` is sugar for `local x.y(x, args)` 

`{ foo = "bar"}` is sugar for `{ ["foo"] = "bar"}`



--Andrew