| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. Корректировка функции

Autolisp. Корректировка функции

Ответ
Поиск в этой теме
Непрочитано 02.06.2019, 17:40 #1
Autolisp. Корректировка функции
neonlight_child
 
Регистрация: 01.11.2017
Сообщений: 4

Ребят. подскажите как правильно сделать функцию на autolisp. Мне нужно, чтобы функция возвращала число в зависимости от вводимого аргумента. Хотелось бы обойтись без использования списка и доработать следующий вид функции:

Код:
[Выделить все]
 
(defun arm_mass(diam)
(cond
((= diam 1) (setq arm_mass 10))
((= diam 2) (setq arm_mass 20))
;...
(T (setq arm_mass 1))
))
;для вывода
(print (arm_mass 1))
(print (arm_mass 2))
(print (arm_mass 3))

Вывод должен быть:
10
20
1

А получается лишь:
10
; ошибка: неверная функция: 10
_$

То есть функция сработала только один раз.
Как сделать так, чтобы функция работала бесконечное число раз?
Просмотров: 1825
 
Непрочитано 02.06.2019, 17:43
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


А ничего, что имя функции и имя переменной одинаковые?

----- добавлено через 54 сек. -----
Код:
[Выделить все]
 (defun arm_mass(diam / res)
(cond
((= diam 1) (setq res 10))
((= diam 2) (setq res 20))
;...
(T (setq res 1))
)res)
;для вывода
(print (arm_mass 1))
(print (arm_mass 2))
(print (arm_mass 3))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.06.2019, 18:12
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Цитата:
Сообщение от neonlight_child Посмотреть сообщение
(setq arm_mass 10))
это по аналогии с другими языками, написано, похоже) Где возврат значения из функции осуществляется путем присваивания идентификатору функции значения. А в лиспе возвращается последнее полученное значение, даже если присвоите это значение локальной внутренней переменной функции.
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.06.2019, 21:44
#4
neonlight_child


 
Регистрация: 01.11.2017
Сообщений: 4


Благодарю. Ребят
neonlight_child вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp. Корректировка функции

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SCAD Office 21.1. Обсуждение. Клименко Ярослав SCAD 633 03.10.2015 14:10
Autolisp многократный запуск функции protorgovec LISP 3 14.09.2015 08:31
AutoLisp. Можно использовать компилированные функции на других диалекта? Kirill_Ja LISP 8 03.05.2013 13:52
Функции AutoLISP из ... DLL! Supermax LISP 21 27.06.2010 14:18
Функции в AutoLISP Briz06 LISP 4 14.10.2006 13:25