Привет,
Andrey Cherezov wrote:
> Добрый день, Dmitry Yakimov!
>
> Ваше сообщение от 18.12.2006 10:05:
>
>>> если вызываемое слово возвращает два числа, то это строка, если одно -
>>> то число
>>>
>> Я это как раз применяю, при записи.
>> А вот при чтении не получится, нужно тип хранить.
>>
>>
> А может универсальнее - getter сделать? Т.е. при записи тип понятен, а
> при чтении вызывать getter, если он у этой переменной есть.
> Или явер (прямо в исходнике):
>
> ForthObj.testVar = "Hello, world!"
> MsgBox ForthObj.testVar_get
>
> Тогда при чтении тип результата определяется тем же способом - по
> изменению глубины стека.
> И вообще - не обязательно ведь, чтобы testVar была именно
> форт-переменной класса VARIABLE.
> Она может быть класса COM_VARIABLE :) - с двумя полями кода, например.
> Как VALUE.
>
>
А я еще проще сделаю :) Будем хранить прямо в вариантах.
Класть будет совсем легко. Доставать тоже.
А пользоваться этими вариантами в форте тоже несложно будет, я их в
соответствующие классы оберну.
Только вот вопрос. Делать строную типизацию или нет?
Поясню на примере:
Есть у нас
CComString OBJ myVar
Мы сделаем из vbs скрипта:
ForthObject.myVar = "tratata"
Это все просто и должно работать хорошо.
Но вот я делаю финт:
ForthObject.myVar = 12345
то есть присваиваю число. Как поступить в этом случае?
Можно сказать - тип несовместим. А можно всего одной winapi ф-ей
преобразовать число в тип принимающего варианта то есть в строку.
Трудозатраты в обоих случаях по программированию одинаковы, по ресурсам
машины - во втором немного больше.
Второй вариант для программистов конечно удобнее, большая часть типов с
большей чатью совместима. Все совместимо со всем, офигенна
интероперабельность.
Но главный критерий - не наплодит ли вариант два трудных ошибок? А так
сказали что тип не совместим и все. Андрей, что думаешь?
Best Regards,
Dmitry Yakimov.