varias sentencia que programacion instruccion else ejemplos condiciones lua syntax-error awesome-wm

sentencia - Mi declaración if-then-else-end está fallando en Lua; ¿Cómo puedo arreglarlo?



sentencia if else en c++ (2)

Estoy tratando de mejorar mi rc.lua para el administrador de ventanas Awesome . El rc.lua predeterminado configura un menú con el siguiente código:

myawesomemenu = { { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, { "quit", awesome.quit } }

Utilizo Awesome como gestor de ventanas para el entorno de escritorio GNOME, así que quiero que Awesome use el programa gnome-session-quit lugar de awesome.quit , pero solo si la variable de entorno "DE" está configurada en "gnome". Por lo tanto, reemplacé la quinta línea con

{ "quit", if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end }

Pero cuando vuelvo a cargar el archivo, aparece un "símbolo inesperado cerca de si". ¿Cómo puedo solucionar esto y qué lo causa?


Estoy bastante seguro de que Lua no funciona así: P

¿Has intentado envolverlo en una función?

{ "quit", function() if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end end }

¿Puedes intentar reescribir awesome.quit lugar?

_awesome_quit = awesome.quit awesome.quit = function() if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else _awesome_quit() end end


Prueba esto:

{ "quit", (os.getenv("DE") == "gnome") and function() os.execute("/usr/bin/gnome-session-quit") end or awesome.quit}

a and b or c es como la expresión C a ? b : c a ? b : c , siempre que b no sea false .