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
.