Как "за петлю" в J - PullRequest
       28

Как "за петлю" в J

2 голосов
/ 17 февраля 2011

Я пытался, но код не работает.

for.     T do. B end.
for_xyz. T do. B end.

Что было бы эквивалентно этому из C #

for(int i = 0; i < 10; i++)
    Console.WriteLine("Hello World!");

А что является хорошим ключевым словом для Google для задач J?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Более J-ишный способ петли использует Power ^:, это

f^:10 y

будет применяться f 10 раз; сначала y, затем f(y), ...:

f(f(f(f(f(f(f(f(f(f(y))))))))))

То есть, если p является функцией печати, например: p =: (4) 1!:2~ ]:

(p^:10) 'Hello World!'
Hello World!Hello World!...

В общем, J (в некотором роде) поддерживает код без петель. Если вам действительно нужно 10 раз, строка «Hello World!» например, вы, вероятно, сделали бы что-то вроде:

10 12 $ 'Hello World!'
Hello World!
Hello World!
Hello World!
...
2 голосов
/ 17 февраля 2011

Как отмечалось в начале раздела «Структуры управления» , они применяются только в явном определении. Двоеточие является ключом для настройки такого сценария. Единственное время для. (или любое подобное слово) может встречаться в сценарии, определяемом по правильному параметру :, то есть двоеточию, что означает Явное .

Используйте ссылку на контрольном слове for. на этой странице, чтобы найти полные образцы. Обратите внимание, что эти специальные символы (например, for. И end.) Обычно встречаются в многострочных сценариях, которые заканчиваются одиночным паренем справа. Такая структура - то, что вы должны использовать, если хотите использовать контрольные слова.

Вот первый из приведенных на странице словаря примеров, документирующих структуру for. (http://jsoftware.com/help/dictionary/cfor.htm):

f0=. 3 : 0
 s=. 0
 for. i. y do. s=. >:s end.
)

Как только вы расположите контрольные слова в структуре такого рода, они вступают в силу при выполнении сценария. В этом примере, когда глагол f0 получает целое число в качестве своего единственного (правого) параметра (в сценарии это называется y), это приводит к тому же целому числу. Он перебирает цикл for для получения этого числа.

...