![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| q65 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.5.2011 Репутация: нет Всего: нет |
Необходимо вычислять значения произволных функций ,которые подаются в виде строки. Можно ли это реализовать ,чтобы данная строка транслировалась в код -и создавался метод который был возвращал результат функции?
|
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
q65, думаю что если организовать динамическую компиляцию то можно что нибудь придумать...
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Обратная польская нотация (запись), если тебе не требуется именно компилировать ф-ии в код.
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| q65 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.5.2011 Репутация: нет Всего: нет |
хочется реализовать без парсинга строки
|
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Как без парсинга? Какой синтаксис у формулы? Сишарповский?
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| q65 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.5.2011 Репутация: нет Всего: нет |
забыл ,что в с# необходимо указывать класс для вызова мат функций- если можно не указывать, то топик еще атуален
|
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 5 Всего: 24 |
возвращает результат вычисленного выражения. если ты подставишь в исходный код другую строку(файл *.cs это текстовый файл), и скомпилируешь то метод будет возвращать то что ты в него запишешь. только кажется мне что проще написать парсер, чем реализовать динамическую компиляцию, в которой все равно придется искать то место в котором нужно поменять выражение. |
|||
|
||||
| -Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 4 Всего: 59 |
Если все таки компиляцию, то можно так:
используешь так:
Но имей ввиду, что компиляция процесс не быстрый, так что пользуйся, только если производительность тебя устраивает. Но я бы на твоем месте сделал нотацию, тем более ,что делов там не много. Можно еще построить дерево выражений (Expression), но тоже вариант не производительный. -------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
мало того что не быстрый, так еще и требует full trust-а... Можно заюзать IronPython например, или другой какой язык.. в C#5 поговаривают Compiler as Service будет из коробки -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |