Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамическое создание Function... (http://www.flasher.ru/forum/showthread.php?t=67322)

MaxLife 02.08.2005 21:08

один из вариантов, конечно. но он не требует постоянного парсинга для каждого вычисления. дерево потом можно крутить сколько угодно, и менять значения переменных. шум, как я понял, дошёл до того, что на каждое вычисление нужен парсинг.

KidsKilla 02.08.2005 21:10

в любом случае ф-цию придётся каждый раз вызывать.
а шум зашел из-за того что не работает eval("x*x");

MaxLife 02.08.2005 21:12

в честь чего каждый-то? при создании нового выражения - да. при вычислении одного и того же несколько раз - не обязательно.

opex 02.08.2005 22:12

Я думаю тебе нужно использовать Обратную польскую запись :)

MaxLife 03.08.2005 18:56

блин, действительно польскую :) склероз :(

St. Father 18.08.2005 13:41

Подниму трэд. Практически та же байда.
Цитата из хэлпа:
"...при ее помощи можно динамически преобразовывать строки в идентификаторы объектов, клипов и функций..." - эт про eval.
суть в следующем. надо запускать функцию с параметром(ами), причем имя и параметры должны браться из строки. т.е. что-то типа:
Код:

var str:String = "trase ('help')";
eval (str); //знаю, что бред ;)
function trase (txt)
{
        trace(txt);
}

Если все же я неправильно понял фразу "преобразовывать строки в идентификаторы функций", то помогите написать парсер для этого дела, плиз, я уже голову сломал на том, как это можно реализовать.
Спасибо!)

St. Father 18.08.2005 13:53

упс, так сказать...
нашел решение сам. :)
Код:

var f:String = "ff";
var str = eval ("tr")(f);
function tr (t)
{
        if (t)
                trace(t);
        else
                trace("no text");
}

мож пригодится кому ;)

Carl Johnson 14.04.2006 17:25

можно так

e = "x * x"
f = eval(" function(x) {return " + e + "};")
потом типа y = f(x)

куда надо просто передаешь "x * x"

но по-моему удобнее просто передать функцию


Часовой пояс GMT +4, время: 05:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.