2015-06-17 2 views
1

Я водн новичку, и я пытаюсь написать CSV сохранить функциюkdb q: '{ошибка из-за новой строки?

CSVsave:{[filename;table] 
    filename: $[-11h = type filename;filename;`$":", filename]; 
    @[hdel;filename;()]; 
    h: hopen filename; 
    (neg h) csv 0: table; 
    hclose h; 
}; 

Когда я это в файл IO.q и сделать

\l IO.q 

Я получаю сообщение об ошибке

k){0N!x y} 
'{ 
@ 
"q" 
"CSVsave:{[filename;table]\n filename: $[-11h = type filename;filename;`$\.. 

но если удалить новую строку и поместить все в одной строке

CSVsave:{[filename;table]  filename: $[-11h = type filename;filename;`$":", filename]; @[hdel;filename;()]; h: hopen filename; (neg h) csv 0: table; hclose h;}; 

Все работает отлично.

Я пропустил что-то очевидное?

ответ

6

Пространство перед последней скобкой.

CSVsave:{[filename;table] 
    filename: $[-11h = type filename;filename;`$":", filename]; 
    @[hdel;filename;()]; 
    h: hopen filename; 
    (neg h) csv 0: table; 
    hclose h; }; 

Я также предлагаю попробовать IDE kdb. Вместо того, чтобы постоянно экономить нагрузку. например qStudio

+0

Thanks John. Я пробовал qStudio, но он, похоже, терпит неудачу, когда в коде есть строки «show xxx». qStudio будет висеть при первом возврате печати. – jf328

1

Любой многострочный код должен быть отступом в скрипте. Большинство людей отступают от своих функциональных органов, так что только обратите внимание на заключительную фигуру. Если у вас есть сценарий, как

select ... 
from ... 
where ... 

то строки, начинающиеся с «от» и «где» должны быть отступы тоже. Или, по крайней мере, в прошлый раз я попробовал.

Кроме того, я рекомендую студию kdb очень высоко! Без него я не могу представить себе развитие.

0

Я провел несколько дней назад, когда я был новичком в q, пытаясь понять, что я сделал неправильно. Ответ заключается в том, что вам нужно пространство перед конечной фигурной скобкой. Он может быть на своей собственной линии, но ему просто нужно пространство перед этим. Зачем? Без понятия. Вот как это.

CSVsave:{[filename;table] 
    filename: $[-11h = type filename;filename;`$":", filename]; 
    @[hdel;filename;()]; 
    h: hopen filename; 
    (neg h) csv 0: table; 
    hclose h; 
}; 
Смежные вопросы