Форум » [x]Harbour » как реализована объектная модель ? » Ответить

как реализована объектная модель ?

MIKHAIL: В конструкции for each var in arr var - содержит значение элемента массива и в то же самое время можно получить дополнительные свойства как объекта var:__enum* Как это реализовано ?

Ответов - 21, стр: 1 2 All

Петр: ### SCALAR CLASSES ### ============================ Both compilers support scalar classes and allows to add OOP functionality to native types like numeric, character, array, hash, codeblock, date, ... It's possible to overload default scalar classes provided by Harbour and xHarbour or use ASSOCIATE CLASS command to bound any class with some native type. It's also possible to overload the behavior of some operators if it's not already defined for given types. Anyhow it's not possible to change operator precedence which is the same for all types and defined at compile time. Команда ENABLE TYPE CLASS ALL разрешает ООП функциональность для ВСЕХ (ALL) скалярных типов, поддерживаемых Hb. Можно было бы написать ENABLE TYPE CLASS NUMERIC но в первой части примера я показал, что все типы (ну еще есть указатель, кроме перечисленных) имеют, как минимум, один метод AsString унаследованный от ScalarObject. Рекомендую изучить исходник src\rtl\tscalar.prg В т.ч. информацию по ссылке /* Class(y) documentation is located at: https://harbour.github.io/ng/classy/menu.html */ ASSOCIATE CLASS MyNumericClass WITH TYPE NUMERIC это означает, что мы ассоциировали класс MyNumericClass (унаследованный от класса Numeric) с числовым типом и Hb при операциях с числовым типом будет использовать свойства (операторы/методы) этого класса. [ >> ] == " >> " - просто строка для вывода QOut MIKHAIL пишет: что означает начало и концовка выражения ? Уточните какого именно.



полная версия страницы