Я использую ниже, чтобы объединить несколько таблиц

() uj/(a;b;c)

Однако есть ли способ передать список таблиц для достижения этой цели?

В настоящее время, если я делаю ниже, я получаю ошибку типа

tbList:tables[]
() uj/(tbList)

Спасибо

kdb
0
AFox 20 Авг 2018 в 18:25

3 ответа

Лучший ответ

uj требует аргументов таблицы, а tables[] возвращает имена переменных в корневом пространстве имен, которые являются таблицами, в виде списка символов.

Чтобы получить список таблиц из этого, вы можете использовать value each tables[], который по очереди оценит каждое имя переменной и вернет оцененные таблицы в виде списка.

Если / (over) предоставляется только с одним аргументом списка, то в качестве начального значения будет выбран первый элемент, поэтому вам не нужно указывать пустой список в качестве начального значения, например:

uj/[value each tables[]]

2
Mark Kelly 20 Авг 2018 в 15:47

Технически это может быть достигнуто путем передачи имен таблиц:

eval (uj/;enlist,`tab1`tab2`tab3)

Но может быть более обычным использовать value, как предлагали другие

2
terrylynch 20 Авг 2018 в 15:55
() uj/value each tbList

Оценивая символ, возвращает значение переменной, которую он называет.

0
jomahony 20 Авг 2018 в 15:38
51934002