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

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

Передать значение переменной из одной функции в другую

Ответ
Поиск в этой теме
Непрочитано 15.11.2023, 15:14 #1
Передать значение переменной из одной функции в другую
olga87
 
Регистрация: 28.05.2007
Сообщений: 229

Здравствуйте Уважаемые программисты!

Подскажите пожалуйста как передать значение переменной start-point из функции F2 в функцию F1?

Код:
[Выделить все]
(defun C:F1 ( / )

  (command "cmdecho" 0)
 ... 

(defun _F2 (start-point end-point / )

...

)
  (vl-load-com)
...

)
Просмотров: 964
 
Непрочитано 15.11.2023, 15:20
#2
Кулик Алексей aka kpblc
Moderator

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


Для начала сделать из команды F1 функцию. И потом просто добавлять ей параметры.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.11.2023, 15:24
#3
olga87


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


Можете показать пример
olga87 вне форума  
 
Непрочитано 15.11.2023, 15:25
#4
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (defun f1(param / )
; ...
)

(defun f2(start-point end-point)
; ...
(f1 start-point)
; ...
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.11.2023, 15:31
#5
olga87


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


А мне нужно наоборот, из функции с несколькими параметрами взять только один параметр.


(defun f1 (param1 param2 param3 / )
; ...
)

(defun f2(start-point end-point)
; ...
(f1 param1)
; ...
)
olga87 вне форума  
 
Непрочитано 15.11.2023, 15:47
#6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от olga87 Посмотреть сообщение
А мне нужно наоборот, из функции с несколькими параметрами взять только один параметр.


(defun f1 (param1 param2 param3 / )
; ...
)

(defun f2(start-point end-point)
; ...
(f1 param1)
; ...
)
Вначале вопрос звучал по-другому...
Такого в лиспе не будет. Перегрузки здесь нет. Выхода лично я вижу два - либо вместо остальных передавать nil, либо передавать, к примеру, список точечных пар (https://autolisp.ru/2009/10/21/lisp-overloading/).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.11.2023, 18:15
#7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Или я суть вопроса не понимаю или... А чем глобальные переменные плохи?
Ну да, нужно озаботиться уникальностью имён. Зато дёшево и сердито. :-)
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 15.11.2023, 18:53
#8
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
А чем глобальные переменные плохи?
Ну да, нужно озаботиться уникальностью имён. Зато дёшево и сердито. :-)
хотя бы полной неуправляемостью видимости переменной)
Сергей812 вне форума  
 
Непрочитано 15.11.2023, 19:19
#9
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627


Ну, фиг его знает... Если C:F1 оформлена именно, как команда
и вызывается из меню, то определить перед её вызовом глобальную
переменную - самое оно.

Я раньше (теперь уже так делать перестал) даже между функциями
так данные гонял. С прошлого века стабильно библиотеки работают,
переписывать лень. Но - "информационная гигиена" обязательна.
Используешь переменную внутри функции - проверь её существование.
Использовал и больше этого значения никому не нужно - сбрось в nil.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 15.11.2023, 20:07
#10
Сергей812


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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Используешь переменную внутри функции - проверь её существование.
Использовал и больше этого значения никому не нужно - сбрось в nil.
в результате из-за подмены аргументов публичными переменными получаешь либо дополнительные проверки, либо потенциальный источник проблем - который потом придется отлавливать в отладке общего кода.

Имхо, разработчики представляли область применимости встраиваемых языков как дополнение функционала программы-владельца. А по факту на них стали пытаться писать, как на полнофункциональном ЯП.
Сергей812 вне форума  
 
Автор темы   Непрочитано 16.11.2023, 07:15
#11
olga87


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


Спасибо Всем!
Буду пробовать.
olga87 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Передать значение переменной из одной функции в другую



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перенести плагины из одной среды в другую в Текла 2023? olegrussia Tekla 1 14.08.2023 15:33
Как сохранить значение переменной _LUPREC на всех чертежах? Михаил777 AutoCAD 13 01.03.2017 00:00
СПДС GraphiCS 8 Как сделать ссылку ячеек одной таблицы на другую в спдс? Penalty ПО от CSoft 7 29.01.2016 13:15
Вернуть значение переменной после выполнения команды. shartal Программирование 6 23.04.2014 18:38
Как передать функции (getkword) Список ключевых слов из списка? Kostinok Программирование 31 31.05.2012 13:08