PDA

View Full Version : Lua - select statement?



Jlee
February 28th, 2006, 05:25 AM
Is there a better way to do this in Lua as it seems a bit long winded to have an if statement with so many elseif's. Some sort of select statement maybe?


luckydip = math.random(1,27)
if luckydip == 1 then
path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Pot luck - any album'
elseif luckydip == 2 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\2 tracks from 10 new albums'
elseif luckydip == 3 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Album with unrated tracks'
elseif luckydip == 4 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Favourite album'
elseif luckydip == 5 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Newly added album'
elseif luckydip == 6 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\NOW! album'
elseif luckydip == 7 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Rock album'
elseif luckydip == 8 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Artists\\Tracks from one artist (rated)'
elseif luckydip == 9 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Artists\\Tracks from one artist'
elseif luckydip == 10 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\50 tracks - pot luck'
elseif luckydip == 11 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\2 tracks from each decade'
elseif luckydip == 12 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 2000s'
elseif luckydip == 13 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 60s'
elseif luckydip == 14 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 70s'
elseif luckydip == 15 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 80s'
elseif luckydip == 16 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 90s'
elseif luckydip == 17 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\50 tracks off iPod - pot luck'
elseif luckydip == 18 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\60s Top 20 Hits'
elseif luckydip == 19 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\70s Top 20 Hits'
elseif luckydip == 20 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\80s Top 20 Hits'
elseif luckydip == 21 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\90s Top 20 Hits'
elseif luckydip == 22 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\2000s Top 20 Hits'
elseif luckydip == 23 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Club / dance selection'
elseif luckydip == 24 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Good dance tracks'
elseif luckydip == 25 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Album from 2005+'
elseif luckydip == 26 then path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Recent hits - 2005+'
else
path = 'Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Romantic'
end;

I'd like to use something similar to apply channel numbers to channel names on Sky TV i.e. have the channel names in the buttons on my CCF and the associated channel numbers in my lua file. This would make it a whole lot easier to fix when Sky change all the channel numbers.

mhwlng
February 28th, 2006, 07:48 AM
see http://www.promixis.com/phpBB2/viewtopic.php?t=9533

marcel

jwilson56
February 28th, 2006, 08:03 AM
Having no case statement is surely missed....


:(


John

Jlee
February 28th, 2006, 08:16 AM
see http://www.promixis.com/phpBB2/viewtopic.php?t=9533

marcel
Thanks very much.

Promixis
February 28th, 2006, 12:30 PM
Having no case statement is surely missed....


:(


John

The authors of lua have good reasons for no case statement.

There are many 'better' ways of doing some of these operations and using a table and key/value pairs is one excellent solution.

Jlee
February 28th, 2006, 11:16 PM
I tried that but keep getting an error and I cannot see what's wrong with my code. Help!

Error =



function GetRandom()
luckydip = math.random(1,27)

p = {
1 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Pot luck - any album",
2 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\2 tracks from 10 new albums",
3 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Album with unrated tracks",
4 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Favourite album",
5 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Newly added album",
6 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\NOW! album",
7 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Rock album",
8 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Artists\\Tracks from one artist (rated)",
9 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Artists\\Tracks from one artist",
10 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\50 tracks - pot luck",
11 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\2 tracks from each decade",
12 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 2000s",
13 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 60s",
14 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 70s",
15 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 80s",
16 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\10 from the 90s",
17 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\50 tracks off iPod - pot luck",
18 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\60s Top 20 Hits",
19 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\70s Top 20 Hits",
20 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\80s Top 20 Hits",
21 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\90s Top 20 Hits",
22 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\2000s Top 20 Hits",
23 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Club / dance selection",
24 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Good dance tracks",
25 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Album from 2005+",
26 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Recent hits - 2005+",
27 = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Tracks\\Romantic"

}
path=p[luckydip]
print (path)
end;

Rob H
February 28th, 2006, 11:36 PM
Ah, if you're adding entries to a table using numeric keys then you should either just omit the keys altogether - Lua will insert them automatically starting from 1 or put the key in square brackets ie


p = {
"Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Pot luck - any album",

or


p = {
[1] = "Media Library\\Audio\\NetRemote\\Lucky Dip\\Albums\\Pot luck - any album",

Jlee
March 1st, 2006, 12:59 AM
Thanks Rob. Don't know where I'd be without your help sometimes :)

Rob H
March 1st, 2006, 02:48 AM
No problem