|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 17.01.2014
Сообщений: 97
|
Всем привет! Подскажите, как можно преобразовать строку, в которой содержится ряд цифр в числовое значение? Например, имеется строка "402". Как из нее получить значение 402, чтобы в дальнейшем с ним можно было работать как с числом (например, вставить в формулу).
|
|||
|
||||
Регистрация: 15.04.2019
Сообщений: 58
|
Здравствуйте!
Подскажите, пожалуйста, какая структура лучше (наверняка у этих вариантов есть какие-то названия, но я их не знаю, поэтому постараюсь обозначить схематично): Вариант 1 ("главная" функция оборачивает собой определения всех остальных функций): Код:
Вариант 2 ("главная" функция только вызывает другие функции, а определения их даются вне "главной") Код:
Вариант 3 (Имеется только одна громоздкая функция, внутри которой вшиты все необходимые процедуры) Код:
Так, вариант 1-2 - "матрёшка": определение каждой последующей функции лежит в теле той, которая её вызывает. Вариант 2-2 - "лесенка": каждая функция вызывает следующую, но определения функций лежат отдельно. С точки зрения написания самого кода и ориентирования в нём самым удобным вариантом видится 2-й, а самый жуткий - 3-й. Интуитивно кажется, что если процедуры внутри функции не повторяются, то 3-й вариант должен быть самым быстрым и жрущим минимум ресурсов. Но есть ли разница между 1, 2 (и 1-2, 2-2) вариантами с точки зрения их обработки (с точки зрения программирования она понятна)? Куда во 2-м варианте деваются функции, объявленные вне основной после того, как основная будет выполнена? Выгружаются, или остаются висеть в памяти? Выгружаются ли функции, объявленные внутри "материнской" после выполнения "материнской"? А после полного завершения работы всех процедур? Как эти варианты соотносятся с точки зрения скорости обработки? П.С. Что происходит с объявленными функциями и подгруженными переменными при аварийном выходе (ESC или ошибка)? П.П.С. Существует ли возможность вычистить память от мусора, не закрывая документ? Последний раз редактировалось modest-bp, 29.07.2020 в 18:37. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
С точки зрения скорости, по-моему, одинаково. Но у тебя неправильно написано:
Код:
Вариант 3 подойдет, если локальные функции будут вызываться только один раз.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,038
|
modest-bp,
Имхо, почитайте книгу "САПР на базе AutoCAD - как это делается" - тут даже на форуме выкладывалась в этом году. а куда они выгрузятся?) код загрузился и загрузился, это память под данные может выделяться и освобождаться.. а может выделяться и оставаться занятой - так называемая утечка памяти. |
|||
|
||||
Регистрация: 15.04.2019
Сообщений: 58
|
Цитата:
Функции объявляются как локальные переменные? А как же "warning: local variable used as function"? Вот, даже специально повторил этот пример: Я, наверное, что-то не так понял в этом примере? Потому как у меня "Варианте 1" внутренние функции не объявлялись в локальных переменных "материнской" функции... Так что, выходит, можно смело делать, как удобно? Т.е. объявлять функции вне тела основной - это вполне "чистое" и "правильное" решение? А ведь, главное, оно легко читаемое, с таким кодом проще всего обращаться: сделал много "заготовок" - и в новых программах просто обращаешься к ним, а их - выписываешь внизу под кодом основной функции... Удобно же, когда код длинный с большим количеством условий, циклов и т.п... ----- добавлено через ~5 мин. ----- Цитата:
Вот просто по логике, мне так кажется, если "вложенные" функции объявляются внутри "материнской" (их вызывающей), то при завершении выполнения всех "материнских" процедур они должны бы освободить место. А в ситуации, когда функции объявляются вне тела вызывающей их функции, мне так кажется, существует высокая вероятность того, что они будут продолжать занимать память и после того, как "материнская" функция своё отработает... Нет? |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,038
|
Цитата:
есть код, есть данные. Код никуда не девается, локальные переменные должны автоматически освобождаться после выхода из функции, глобальные переменные - нет. А со всей этой матрешкой из функций скоро сами запутаетесь просто. Почитайте книжку - там и про организацию кода в лиспе тоже есть, насколько помню. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Забей. Но только на это сообщение.
----- добавлено через 45 сек. ----- Разделяй и властвуй. Последуй совету Сергей812, он дело говорит.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Лично я лентяй. И если один и тот же код длиной больше 5-10 строк приходится повторять больше чем 1 раз, я из него делаю функцию (локальную или глобальную - это уже другой вопрос). Может, это неправильно, может - нет, не знаю.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 17.01.2014
Сообщений: 97
|
Всем привет!
Есть код который подсчитывает количество определенных блоков в чертеже и отображает информацию в командной строке. Код:
1. Подсчет количества всех вхождений заданного динамического блока. 2. Подсчет количества определенного состояния видимости всех вхождений заданного динамического блока. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Dynamic Block Counter не подойдет?
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
gnuvse, в этом посте есть описание функции draw-mleader. Там и ее содержимое, и ее построение в коде имеется.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
А если в гугле поискать именно по таким словам?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 13.04.2017
Сообщений: 134
|
Вы правы, но у меня низкая квалификация для оценки чужого кода, поэтому я пришел сюда с данным вопросом.
Если я взялся осваивать, то хотелось бы учиться по программе, которую написал опытный разработчик, например вы Поэтому, если вам не сложно, то скиньте пару примеров исходников, я думаю мне надолго хватит вникать. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |