how to create temp variable inside $[]

https://learninghub.kx.com/forums/topic/how-to-create-temp-variable-inside

if i use $ for if how can i add temp variable there? my understanding is it is either condition or the return value. so how can i put the below logic into this? suppose i have only input x and the if else logic below.

$[x=`a;5; ?]

if x = 'a' return 5

if x='b'

       y = x*x +5

      if( y > 6 ) return 6 

      if(y>9) return 10


You can do something like the following:

q)f:{[x] $[x~`a;5;x~`b;[y:6*6;$[y<6;6;y>9;10;y]];x]} 
q)f {[x] $[x~`a;5;x~`b;[y:6*6;$[y<6;6;y>9;10;y]];x]} 
q)f `a 5 
q)f `b 10

I would use a function (as above) or a lambda (anonymous function), that way your temp variable will only remain for the scope of the function i.e. in the example above, y does not exist in my global namespace after execution. You can read more about conditional scope here

You can see if x is b in the above we have square brackets which defines a contained block of code to run if the statement is true. See more here

Please find more on the extended if-else / switch statement here

thanks a lot!