Описание функции gp:FindPointInList
Окончательная компоновка
|
| ||||
Описание функции gp:FindPointInList |
| ||||
Заголовок функции в исходном коде поясняет, как функция gp:FindPointInList преобразует информацию, с которой она работает. Как и предыдущая функция, Gp:FindMovedPoint, данная функция использует возможности LISP обрабатывать списки. При работе со списками часто встречается комбинация функций mapcar и lambda. На первый взгляд, это несколько запутанные функции, имена которых не отображают то, что они в действительности делают. Однако они являются самыми мощными средствами из всего набора функций AutoLISP. Ниже приведено краткое описание функций mapcar и lambda.
Функция mapcar применяет выражение ко всем элементам списка. Например, если имеется список целых чисел 1, 2, 3 и 4, функцию mapcar можно использовать для прибавления единицы (выражение 1+) ко всем элементам списка: _$ (mapcar '1+ '(1 2 3 4)) (2 3 4 5) Исходное назначение функции mapcar заключается в том, что она последовательно применяет функцию, указанную в первом параметре к элементам второго параметра списка. Результатом выполнения операции mapcar является преобразованный список. В действительности функция mapcar может использоваться не только для этого, но на данном этапе такого определения достаточно. В приведенном примере для каждого значения в списке '(1 2 3 4) была выполнена функция 1+. По сути дела, функция mapcar выполнила несколько операций, а затем собрала полученные значения в один список: (1+ 1) -> 2 (1+ 2) -> 3 (1+ 3) -> 4 (1+ 4) -> 5 Приведем еще один пример использования mapcar, на этот раз для выполнения функции null с целью выявления в списке неверных значений: _$ (mapcar 'null (list 1 (= 3 "3") nil "Steve")) (nil T T nil) В данном фрагменте кода выполняется следующее: (null 1) -> nil (null (= 3 "3") -> T (null nil) -> T (null "Steve") -> nil Внутри функции mapcar можно использовать большинство из функций AutoLISP.
|