2013-04-19 2 views
2

Я хочу проверить количество аргументов команды в моем сценарии Q и вернуть сообщение об ошибке, если .z.x не соответствует предполагаемому количеству аргументов. До сих пор я придумал эту линию:Как проверить аргументы командной строки в сценарии kdb?

if[count .z.x < 4; '`BadUsage] 
"Arguments OK" 

Я никогда не пройти мимо, если заявление, он всегда возвращает `BadUsage, независимо от количества аргументов, которые я использую.

Как проверить правильное количество аргументов, распечатать сообщение об ошибке и выйти из сценария?

ответ

3

Это потому, что операторы оцениваются справа налево. Сначала оценивается .z.x < 4, а затем подсчет этого результата.

q)count .z.x < 4 
0 
q)4 > count .z.x 
1b 
+0

Спасибо. Как распечатать сообщение об ошибке, вернуть код BadUsage и выйти из сценария? Я не понял, как включить несколько инструкций в оператор if после условной оценки. –

+1

Что-то вроде этого: q) если [4> count .z.x; 0N "BadUsage!"; exit [0]]. Проблема с вашим вышесказанным выше, после того, как она попадает в ', любые утверждения после этого не оцениваются. – user1895961

Смежные вопросы