атомарное представление предложения для инициализации существительного

В такой структуре данных, как

введите здесь описание изображения

Я хочу иметь возможность использовать . (do) ​​для инициализации того, что может быть длинным списком имен существительных слева со значениями справа во вложенном массиве. Значение может быть вложенным массивом. 5!:5 требует имени существительного, чтобы получить атомарное представление. Каков подход к получению AR только данных, таких как вложенный массив, например ‹'data';'data';100?


j
person Joe Killian    schedule 23.10.2020    source источник
comment
Множественное присваивание требует атомарных повторений только в том случае, если такие значения должны быть вызваны (т.е. превращены из герундия в не существительное в речи). Это относится только к не-существительным, и когда вы, программист, запускаете вызов, начиная литерал слева от связки с `. Для существительных, как у вас здесь, вы можете использовать обычное старое косвенное присвоение: 'IsArchived IsListed IsPrivate IsDeleted IsLocked' =: 0 0 1 1 0 .   -  person Dan Bron    schedule 24.10.2020


Ответы (1)


Если вам нужна AR существительного, я использую это:

   5!:1 <'t' [ t=. <'data';'data';100
┌─────────────────────┐
│┌─┬─────────────────┐│
││0│┌───────────────┐││
││ ││┌────┬────┬───┐│││
││ │││data│data│100││││
││ ││└────┴────┴───┘│││
││ │└───────────────┘││
│└─┴─────────────────┘│
└─────────────────────┘

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

   5!:1 <'t' [ ". 't=.', '<''data'';''data'';100'
┌─────────────────────┐
│┌─┬─────────────────┐│
││0│┌───────────────┐││
││ ││┌────┬────┬───┐│││
││ │││data│data│100││││
││ ││└────┴────┴───┘│││
││ │└───────────────┘││
│└─┴─────────────────┘│
└─────────────────────┘

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

   5!:1 <'t' [ ". 't=.', '+'
┌─┐
│+│
└─┘

Но если у вас есть структура, которую вы указываете, почему бы не сделать что-то вроде этого:

   [ s=:4 3 $ 'one';'=:';1;'two';'=:';2;'three';'=:';3;'four';'=:';4
┌─────┬──┬─┐
│one  │=:│1│
├─────┼──┼─┤
│two  │=:│2│
├─────┼──┼─┤
│three│=:│3│
├─────┼──┼─┤
│four │=:│4│
└─────┴──┴─┘
   {:"1 s
┌─┬─┬─┬─┐
│1│2│3│4│
└─┴─┴─┴─┘
   (;:^:_1 {."1 s)
one two three four
   (;:^:_1 {."1 s)=.{:"1 s
   one
1
   two
2
   three
3
   four
4

ДОПОЛНИТЕЛЬНОЕ РЕШЕНИЕ

Поскольку вы хотите, чтобы существительные были представлены только как AR, вы всегда можете просто построить их в соответствии с правилами AR. Вставьте существительное в рамку, добавьте к списку «0», а затем вставьте результат в рамку.

   arc =: 3 : '5!:1 < ''y''' NB. explict verb to create AR using intermediate name
   ar=. < @:((<, '0'),<)     NB. tacit verb to construct AR for nouns with no intermediate name
   (arc -: ar) 5
1
   (arc -: ar) <'data';'data';100
1
   (arc -: ar) 5;<'data';3j2
1
person bob    schedule 23.10.2020
comment
Есть ли способ получить AR этих данных в штучной упаковке, не называя их сначала? Этот AR будет добавлен к =:, а тот к имени существительного затем будет выполнен с помощью do. Цель состоит в том, чтобы инициализировать большое количество глобальных переменных с данными в штучной упаковке в дополнение к просто целочисленным данным, как показано на изображении. Иными словами, как бы вы сопоставили данные в рамке в третьем столбце с именами в первом? Я мог бы просто поместить все это в скрипт, но тогда инициализация многих существительных с разными значениями не будет автоматизирована через . . - person Joe Killian; 24.10.2020
comment
Если я понимаю, о чем вы говорите, вы можете использовать 5!:0 , наречие, которое преобразует AR обратно в значения. а потом выполнить задание. Единственный известный мне способ получить AR — использовать этот трюк с промежуточным именем. На вторую часть вашего вопроса, кажется, я ответил (;:^:_1 {."1 s) =. {:"1 s в середине =. действует как назначение между левым (;:^:_1 {."1 s) и правым {:"1 s - person bob; 24.10.2020
comment
Я буду работать в подходе с промежуточным именем, но хотел убедиться, что нет возможности AR безымянной структуры данных. Намерение состояло в том, чтобы создать полезное отображение большого количества существительных, используемых в базе данных, вместе с образцами или исходными данными ячеек. Топпер должен был бы использовать тот же вложенный массив отображения, чтобы также просто назначать отображаемые данные именам существительным по мере необходимости. - person Joe Killian; 24.10.2020
comment
Связано это с тем, как отредактировать максимальную длину отображения J Term, чтобы разрешить отображение массива в штучной упаковке, как показано, возможно, с 300 строками без усечения. - person Joe Killian; 24.10.2020
comment
9!:36, чтобы найти ограничения отображения, и 9!:37, чтобы изменить их, - это иностранные союзы, на которые, я думаю, вам стоит обратить внимание. - person bob; 24.10.2020
comment
См. добавленное решение для случая, когда все ваше содержимое является существительным, и вам нужен AR для этих существительных, если это то, что вы ищете? - person bob; 24.10.2020