#red
Вопрос:
Я имитирую следующий код, который исходит от Helpin’Red
a: "big black cat"
parse a [ to "black" insert "FAT "]
print a
big FAT black cat
с моей:
b: [1 2 3]
parse b [to 2 insert 4]
print b
4 4 1 2 3 ;; but what I mean is "1 4 2 3".
Что не так с моим кодом? И как получить желаемый результат?
Ответ №1:
to
сопоставляет входные данные с указанным правилом до тех пор, пока оно не будет выполнено успешно или не будет достигнут конец.2
соответствует заданному количеству раз.insert 4
вставляет значение в текущую позицию и всегда завершается успешно.- Это означает, что
2 insert 4
вставляет два4
» s » и добивается успеха. to
«продвигает» ввод до совпадения2 insert 4
: я говорю «продвигает», потому что на самом деле это не так, вставка происходит в начале.
- Это означает, что
Чтобы достичь того, чего вы хотите, вам нужно сбежать 2
, используя quote
:
>> also block: [1 2 3] parse block [to quote 2 insert 4]
== [1 4 2 3]
К вашему сведению, у Parse есть официальная справочная документация.
Комментарии:
1. Большое спасибо за ваше решение и ссылку на
parse
!