2022.04.13 09:56 PM
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
2022.04.13 10:33 PM
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
2022.04.13 10:33 PM
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
2022.04.14 08:42 PM
thanks a lot!
EMEA
Tel: +44 (0)28 3025 2242
AMERICAS
Tel: +1 (212) 447 6700
APAC
Tel: +61 (0)2 9236 5700
KX. All Rights Reserved.
KX and kdb+ are registered trademarks of KX Systems, Inc., a subsidiary of FD Technologies plc.