2013-05-16 1 views
3

Я пытаюсь создать таблицу символов в kdb, где значения таблицы имеют пробелы внутри. У меняОшибка неправильного типа при создании таблицы с символами с пробелами в kdb/q

tab:([colOne:`$"value 1"`$"value 2"]colTwo:`$"value 3"`$"value 4") 

в настоящее время, но это просто возвращает

ERROR: `type (wrong type) 

я следовал http://www.kdbfaq.com/kdb-faq/tag/sym-with-a-space

ответ

2

Должно быть:

tab:([colOne:`$("value 1";"value 2")]colTwo:`$("value 3";"value 4")) 

Помните, что оценка в д осталось к -право:

colTwo:`$"value 3"`$"value 4" 
`$"value 4" will be evaluated to symbol 

Тогда он будет пытаться применить этот символ к тому, что на левом:

"value 3" `$"value 4" 

который даст вам 'type

+0

Не могли бы вы добавить объяснение? – Trinimon

+0

полезный описание, спасибо. Я понимаю, что причина '' 'type', поэтому мне было любопытно попробовать' (\ '$" значение 3 ") \' $ "значение 4" это однако дает ошибку как '\' значение 3 '. что объясняет это? – ElFik

+0

пытается найти функцию с именем символа слева и называть ее аргументом справа. Поскольку у вас нет функции с именем «значение 3», которое определено - это говорит вам именно об этом. 'a: {show 123}; \ 'a \' b' –

2

вы правы симво с космической частью, но при этом создаются столбцы таблицы принимать списки в качестве входных данных.

tab:([colOne:`a`b]colTwo:`c`d) 

будет нормально, как `a`b список, но при использовании Симса с пробелами необходимо заключить их в (), чтобы сделать список.

ниже также будет работать, хотя ответ Серджи - лучший способ сделать это.

tab:([colOne:(`$"value 1";`$"value 2")]colTwo:(`$"value 3";`$"value 4")) 
Смежные вопросы