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

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

Функция для работы с именем переменной

Ответ
Поиск в этой теме
Непрочитано 22.08.2007, 18:49 #1
Функция для работы с именем переменной
DFooz
 
учащийся
 
Москва
Регистрация: 25.03.2007
Сообщений: 44

Сущ-ют ли функции для работы с именем переменной?
Напр., есть имя "Func_1". Можно ли как-то выцепить единичку из имени?
Просмотров: 5480
 
Непрочитано 22.08.2007, 22:10
#2
Клякса

Инженер
 
Регистрация: 15.08.2007
Питер
Сообщений: 36
<phrase 1=


Почти уверен, что нет. А почему не ввести новую переменную?
__________________
Ошибку нашел и исправил, но в чем она заключалась, так и не понял...
Клякса вне форума  
 
Непрочитано 22.08.2007, 22:38
#3
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Программы с самомодифицирующемся кодом...
Ходят слухи что на лиспе это возможно, хотя может это просто слухи...
Makswell вне форума  
 
Непрочитано 22.08.2007, 22:56 Re: Функция для работы с именем переменной
#4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от DFooz
Сущ-ют ли функции для работы с именем переменной?
Напр., есть имя "Func_1". Можно ли как-то выцепить единичку из имени?
Не очень понятно, зачем, но в принципе, нечто такое можно сделать так:
Код:
[Выделить все]
(setq func_1    '(1 2 3 4)
      tmp       'func_1
      func_name (vl-symbol-name tmp)
      base_name (vl-string-right-trim "0123456789" func_name)
      digital   (atoi (substr func_name (1+ (strlen base_name))))
)
(set (read (strcat base_name (itoa (1+ digital)))) func_1)
(setq func_1 nil)
Цитата:
Сообщение от Makswell
Программы с самомодифицирующемся кодом...
Ходят слухи что на лиспе это возможно, хотя может это просто слухи...
Самомодификация это совсем другое. На ЛИСПе, действительно реализуется достаточно несложно, другое дело, что задач, где это можно применить с пользой, практически нет.
Alaspher вне форума  
 
Автор темы   Непрочитано 24.08.2007, 21:41
#5
DFooz

учащийся
 
Регистрация: 25.03.2007
Москва
Сообщений: 44


Цитата:
Не очень понятно, зачем,
я делаю форматки и хотелось бы в функцию пересылать часть имени переменной (из А1 - 1, из А2 - 2). Просто, чтобы не писать всё время разные параметры пересылки(1, 2), а иметь эту функцию, саму выделяющую часть имени файла.
DFooz вне форума  
 
Непрочитано 24.08.2007, 22:26
#6
Кулик Алексей aka kpblc
Moderator

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


А если просто назначать значение переменной и его передавать в функцию? Что мешает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.08.2007, 23:51
#7
DFooz

учащийся
 
Регистрация: 25.03.2007
Москва
Сообщений: 44


длина кода увеличится. Сущ-ют функции eval, apply, вот я и подумал, может вдруг есть и такая функция.

Всем большое спасибо.
DFooz вне форума  
 
Непрочитано 25.08.2007, 00:00
#8
Кулик Алексей aka kpblc
Moderator

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


Да ну?? Быть того не могет! Может, логику кода надо пересмотреть?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.08.2007, 18:07
#9
DFooz

учащийся
 
Регистрация: 25.03.2007
Москва
Сообщений: 44


Цитата:
Быть того не могет!
В моём случае может.

Цитата:
Может, логику кода надо пересмотреть?
Может. Если кто предложит свой вариант на ЛИСПе будет интересно посмотреть.
DFooz вне форума  
 
Непрочитано 25.08.2007, 20:56
#10
Авдотья Прасковьевна


 
Регистрация: 25.08.2007
область
Сообщений: 6


Цитата:
Сообщение от DFooz
Цитата:
Быть того не могет!
В моём случае может.

Цитата:
Может, логику кода надо пересмотреть?
Может. Если кто предложит свой вариант на ЛИСПе будет интересно посмотреть.
Ой, я столько лиспов знаю.
Только непонятно, что именно вам надо.
Может вы свой вариант покажете?
Авдотья Прасковьевна вне форума  
 
Непрочитано 25.08.2007, 22:46
#11
Кулик Алексей aka kpblc
Moderator

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


Какой вариант кода? Вариантов рисования форматок, извиняюсь, как собак нерезанных (я и то свой написал).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.08.2007, 00:07
#12
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


Я очень извиняюсь, что не в тему...
я, если честно, по теме ниче не понял...почти
я как в запяматованном году себе форматки нарисовал, так ими и пользуюсь, и не знаю зачем тут лисп.

Авдотья Прасковьевна - ваша фамилия случаем не Кибершутер ?
__________________
apel.fas
Apelsinov вне форума  
 
Непрочитано 26.08.2007, 00:10
#13
Авдотья Прасковьевна


 
Регистрация: 25.08.2007
область
Сообщений: 6


Цитата:
Сообщение от Apelsinov
Я очень извиняюсь, что не в тему...
я, если честно, по теме ниче не понял...почти
я как в запяматованном году себе форматки нарисовал, так ими и пользуюсь, и не знаю зачем тут лисп.

Авдотья Прасковьевна - ваша фамилия случаем не Кибершутер ?
Да, но это девичья.
А как вы узнали?
Авдотья Прасковьевна вне форума  
 
Непрочитано 26.08.2007, 00:42
#14
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


Цитата:
Сообщение от Авдотья Прасковьевна

Да, но это девичья.
А как вы узнали?
О, это простое совпадение!
Однако, обещаю Вам: жалеть, завидовать и охотно подсказывать.

Очень надеюсь на взаимность.
__________________
apel.fas
Apelsinov вне форума  
 
Непрочитано 26.08.2007, 10:43
#15
Post

конструктор
 
Регистрация: 29.07.2005
Ростов-на-Дону
Сообщений: 1,095
<phrase 1=


[: |||||||| : ]
__________________
С уважением!!!
Post вне форума  
 
Непрочитано 27.08.2007, 08:14
#16
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от DFooz
Цитата:
Не очень понятно, зачем,
я делаю форматки и хотелось бы в функцию пересылать часть имени переменной (из А1 - 1, из А2 - 2). Просто, чтобы не писать всё время разные параметры пересылки(1, 2), а иметь эту функцию, саму выделяющую часть имени файла.
Честно сказать - стало значительно непонятнее... Передача данных в функции стандартно решается через аргументы.
Alaspher вне форума  
 
Непрочитано 27.08.2007, 08:54
#17
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,626


Для DFooz.
У вас концепция не продумана. Или ее вовсе нет. Вот вы и паритесь.
Цитата:
я делаю форматки
Все делают форматки, но без таких проблем.
Profan вне форума  
 
Непрочитано 27.08.2007, 09:41
#18
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Alaspher
Передача данных в функции стандартно решается через аргументы.
Можно пойти другим путем, на основе данных, сгенерировать функцию, специально заточенную под эти данные...
Как пример:
>Евгений Елпанов (2006-03-12 10:50:01)
Елпанов Евгений вне форума  
 
Непрочитано 27.08.2007, 09:58
#19
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Елпанов Евгений
Можно пойти другим путем, на основе данных, сгенерировать функцию, специально заточенную под эти данные...
Можно, но, обычно, проще сделать что-то такое:
Код:
[Выделить все]
(defun multi-subst-1 (lst lst-i / tmp i)
    (cond ((not lst) nil)
          ((setq tmp (assoc (setq i (car lst)) lst-i))
           (cons (cadr tmp) (multi-subst-1 (cdr lst) lst-i))
          )
          (t (cons i (multi-subst-1 (cdr lst) lst-i)))
    )
)
Не так универсально, но гораздо проще.

[* небольшая правка - локализация переменных]
Alaspher вне форума  
 
Непрочитано 27.08.2007, 10:08
#20
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


>Alaspher
Вы конечно правы, так проще, короче, понятнее...
Я изучал различные способы загрузки программ - мне нужна была защита изнутри лиспа. Я ее получил!
Принципы те же, что и в предложенной мной функции - программа генерируется на основе ключа, если ключ правильный - программа будет работать, не правильный - не будет! Самое главное в том, что в лиспе не хранится проверки ключа - проверить можно самой работой программы.
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Функция для работы с именем переменной