|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Можно ли выйти из цикла (foreach специальной командой lisp?
Регистрация: 14.12.2008
Сообщений: 1,134
|
||
Просмотров: 3276
|
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Нашел в книге Полищука вот такую информацию: оказывается функция Exit в Lisp всегда при срабатывании выдает ошибку. Будто бы без ошибки из программы выйти нельзя?
Как тогда вообще надо выходить из циклов на Лиспе? Даже новая функция vl-exit-with-value не помогает. Что вообще за тугопродуманый язык такой Лисп? Похоже разработчки Лиспа подумали: "надо нам придумать функцию которая бы возвращала элемент списка по заданному названию". Потом дальше подумали: "однако если мы в цикле найдем этот элемент у нас нет функции выхода из цикла. Да ну нафиг эти проблемы! Не будем придумывать такую функцию". Так и остался Лисп без нормальных функций выходов из циклов и без функции нахождения элемента в списке по названию. Ещё похоже Лисп придумали "недалекие простаки". Они думали примерно так: "не будем делать функции выхода из циклов. Чем больше будут работать циклы на нашем языке программирования тем дольше и шумнее будет звучать гул в наших ушах от работы компьютеров на нашем языке программирования! И тем больше будет слава везде про нашу изобретательность и мудрость!". А на самом деле люди мучаются из-за этих славолюбливых, ленивых и боязливых изобретателей. Последний раз редактировалось МишаИнженер, 10.12.2022 в 16:49. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
например, ввести в условие цикла дополнительное условие.
просто изначально альтернативы не было.. либо Lisp, либо ObjectARX. Потом сбоку прикрутили среду VBA от MS, сейчас уже давно .Net есть для "любительских" надстроек. Зависимость от версии - да ерунда, раньше вообще было четко по 3 версии акада на одном "ядре" подряд (такой труд, раз в три года перекомпилить приложение ![]() |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
У меня есть такое условие:
Код:
Никто не знает? Даже разоаботчики Лиспа наверное не знают? Я помню лет 10-15 назад изучал Лисп и этот "Exit" с ошибкой доводил меня до иступления и тогда я бросил изучать Лисп. Похоже ситуация с тех пор не поменялась, или есть решение? |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
вот как бы примерно выглядело на .Net (писал в блокноте
![]() Код:
Последний раз редактировалось Сергей812, 10.12.2022 в 15:52. Причина: добавил коментарии в код |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
|
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
// Собственно проверка существования стиля с сохранением в флаге
lIsExists = lMLStyles.Contains(aNameMLStyle); Если здесь все нашлось и записалось в флаг, тогда почему выполняется следующая строка? Почему здесь нет выхода из функции? // Подтверждение транзакции lTr.Commit(); Как программа попадает сюда, если в предыдущей строке все нашлось и записалось? Это что точка выхода? Не понятно как можно без циклической проверки записей? Мне это очень сложно. Мой уровень VBA, VB. А можно делать Net приложения для AutoCAD на Visual Basic? |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,115
|
Цитата:
Цитата:
Цитата:
Последний раз редактировалось trir, 10.12.2022 в 16:09. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
можно на Vb.Net - чтобы синтаксиса не пугаться) В конечном итоге все преобразуется в один вид - MSIL.
Про выход уже выше написали - хотя в транзакции ничего не делали в плане изменения БД чертежа - но если не выполнить Commit, то автоматически будет вызван более ресурсоемкий метод Abort. ----- добавлено через ~11 мин. ----- только потом все равно на C# придется перейти - большинство годных примеров на нем всетаки) |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627
|
О чем вообще спор?
(foreach ...) программист использует тогда, когда понимает, что ему нужно обязательно перебрать все элементы списка. Нужно выйти из цикла по условию? Тогда к вашим услугам функция (while ...) (exit) порождает "ошибку" ? Ну и что за беда - переопредели *error*, назначь там вывод сообщений, возврат на место временно изменённых системных переменных или просто "тихий выход без сообщений" и радуйся жизни. :-)
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 627
|
Ага, я тоже в 80-е годы прошлого века на Фортране
программы фигачил - на 50 строк кода с десяток операторов перехода. И ведь работало! Но нас тогда учили, что они, операторы эти, есть зло и самые правильные ЯП содержать их не должны. :-)
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
хотя если ТС будет "изучать" .Net таким же способом, как лисп - неизвестно, что лучше: лисп или .Net) В лиспе (как и в VBA) все-таки достаточно много вещей спрятано от разработчика - никаких транзакций, приведений типа и т.д. В .Net несколько раз в начале обучения умудрился "уронить" сам акад своим кодом
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Цитата:
Код:
Код:
Миша, тебе давно пора в тему "Научите на примере", сколько можно?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
конструктор Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,118
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Да, про vl-some я как-то не подумал
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
конструктор Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,118
|
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp. Можно ли октрыть файл не открывая окна? | Composter | LISP | 9 | 12.12.2016 22:38 |
LISP. Выравнивание текста по двум точкам. | Krieger | Готовые программы | 10 | 24.12.2011 16:02 |
{Конкурс} Lisp. Задачки для студентов | gomer | LISP | 10 | 05.01.2011 16:33 |
Как можно открыть чертеж через LISP на котором стоит пароль? | ivspec | LISP | 7 | 10.02.2006 17:36 |
загрузка DOS прог через LISP | Gaa | LISP | 15 | 12.08.2005 19:19 |