How to perform multiple assignment with return values ​​in case case ruby ​​(1.9)?

This works great:

q = case period_group when 'day' then [7, 'D'] when 'week' then [7, 'WW'] else ['12','MM'] end limit,pattern = q[0],q[1] 

But my first attempt:

 limit, pattern = case period_group when 'day' then 7, 'D' when 'week' then 7, 'WW' else '12','MM' end 

ends in SyntaxError:

 syntax error, unexpected ',', expecting keyword_end when 'day' then 7, 'D' 

Did I miss something?

+4
source share
2 answers

You must return an array for this. Otherwise, it embarrasses the parser.

 limit, pattern = case period_group when 'day' then [7, 'D'] when 'week' then [7, 'WW'] else ['12','MM'] end 

I don’t understand why you wanted to get rid of the square brackets. This is even more clear.

+15
source

you forgot to put return values ​​inside []

 limit, pattern = case period_group when 'day' then [7, 'D'] when 'week' then [7, 'WW'] else ['12','MM'] end 
+1
source

Source: https://habr.com/ru/post/1432900/


All Articles