:: Visual Foxpro, Foxpro for DOS
Перепрыгнуть метод
PaulWist
Автор

Сообщений: 14618
Дата регистрации: 01.04.2004
Братцы, запамятовал, как вызвать метод родительского класса?

Class1.Metod1 -> Class2.Method1 -> Class3.Metod1

createobject('Class3')

надо вызвать метод Class1.Metod1 минуя Class2.Method1

"помню только три буквы" (с) только два двоеточия ::




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
sphinx

Сообщений: 31180
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
DODEFAULT не спасет?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
А вызывать то откуда хочешь?

Если из метода класса №3, то всё правильно пишешь

Local lo
lo = createobject('c3')
lo.msg()
Define Class c1 as Custom
Procedure msg()
MessageBox('1')
EndProc
EndDefine
Define Class c2 as c1
Procedure msg()
MessageBox('2')
EndProc
EndDefine
Define Class c3 as c2
Procedure msg()
MessageBox('3')
c2::msg()
c1::msg()
EndProc
EndDefine
Ratings: 0 negative/2 positive
Re: Перепрыгнуть метод
PaulWist
Автор

Сообщений: 14618
Дата регистрации: 01.04.2004
Ага.

Спасибо, Олег.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Олег крут!)
() Но, блин, чтобы применять эти :: приходится знать устройство класса (его "предысторию"), "это уже не то", не "класс", который дан свыше и не имеет особенностей кроме своих видимых методов и свойств.... Двойное двоеточие - это типа как "хук" ...
Ratings: 1 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
of63
.... Двойное двоеточие - это типа как "хук" ...

Нет. Это так задумано изначально и документировано в хелпе.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Двойное двоеточие - это типа как "хук"
Это не хук, а примерно то же самое, что и DODEFAULT() - уж им-то ты наверняка пользовался.
Разница лишь в том, что DODEFAULT() выполняет родительский метод с тем же именем, из которого вызывается, а оператор "::" - с тем, который будет указан.
Ну, и уровень родителя - у DODEFAULT() - лишь предшествующий, а у "::" - любой предыдущий.

Так что при желании без DODEFAULT() можно было бы обойтись, так как это лишь частный случай оператора "::".



Исправлено 2 раз(а). Последнее : akvvohinc, 29.10.22 01:37
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Так что при желании без DODEFAULT() можно было бы обойтись, так как это лишь частный случай оператора "::".

Не помню 26 или 52 команды было изначально в фоксе. И всё работало не хуже чем сейчас.
А остальное - баловство. Без которого вполне возможно обойтись.



Исправлено 1 раз(а). Последнее : Taran, 29.10.22 12:15
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
А остальное - баловство. Без которого вполне возможно обойтись.
И всё же я не предлагал отказываться от функционала (полезного или бесполезного для того или иного разработчика).
Оператором "::" можно заменить DODEFAULT() без потерь функциональности.

В Фоксе есть и куча других "синонимов", например
ERASE и DELETE FILE
IIF() и ICASE()
VARTYPE() и TYPE()
DTOS() и DTOC(*,1)
Циклы DO WHILE !EOF()+SKIP и SCAN
операторы "." и "->",  "#"  "!=" и "<>", NOT и "!"
функция MOD() и оператор "%"
круглые и квадратные скобки для массивов и функций

Так что обойтись-то можно - это лишь вопрос удобства использования.



Исправлено 1 раз(а). Последнее : akvvohinc, 29.10.22 12:44
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ай. Ты думаешь я эти "похожести" не знаю?
Не все они конечно взаимозаменяемы.

Про DODEFAULT().
Тут важно удобство сопровождения и чтения исходника.
Я не помню чтобы где-то у меня было использование 4етырех точек.
Ну вот Павлу понадобилось вдруг. И фокс оказался крут.

Ну да не тема.
Ratings: 0 negative/1 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Не все они конечно взаимозаменяемы.
Например?
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
akvvohinc
Taran
Не все они конечно взаимозаменяемы.
Например?

Хернёй я еще не маялся на старости лет чтобы впадать в ...
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Taran
Хернёй я еще не маялся на старости лет чтобы впадать в ...
Ожидаемо - примеров невзаимозаменяемости нет.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
of63
Двойное двоеточие - это типа как "хук"
Это не хук, а примерно то же самое, что и DODEFAULT() - уж им-то ты наверняка пользовался.
Разница лишь в том, что DODEFAULT() выполняет родительский метод с тем же именем, из которого вызывается, а оператор "::" - с тем, который будет указан.
Ну, и уровень родителя - у DODEFAULT() - лишь предшествующий, а у "::" - любой предыдущий.

Так что при желании без DODEFAULT() можно было бы обойтись, так как это лишь частный случай оператора "::".

Под словом "хук" в данном смысле имел, что сама идея классов (из чего он создан, и какие свойства или методы он имел в родителях де должна быть видна конечному пользователю класса, из которого он сделает себе копию) не предполагает видимости "внутренностей" класса, не более того была "мысль" )

Доб. Ни разу не пользовался оператором "::". Если требовалось дать доступ к функциям родителей класса, (или к свойствам), то это значило, что надо было включать в функционал класса доступ к этим поддеталям класса, ... но "расширять" обьект... точнее, давать себе (юзеру класса) возмоджность лазить по методам и свойства классов-родителей - это не есть вариант, который кончится хорошим... нае...ся



Исправлено 1 раз(а). Последнее : of63, 30.10.22 21:57
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Ни разу не пользовался оператором "::".
А каким способом ты "делаешь" дочерний метод на основе родительского?
Допустим, тебе надо добавить пару строк к методу родителя.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
кроме ADDPOPERTY(обьект...
есть другие варианты добавления (кроме экзоитики, типа "" создать курсор, считать с курсора обьект.., навскидку?

Допустим, тебе надо добавить пару строк к методу родителя.
Ты умеешь? Добавить к методу?
Это описка, даже не спрашиваю. К методу пару строк нельзя "добавить"

Свойства (имя и значение) добавляем и понимаем ) много лет, "чего и всем желаю" ) youtu.be



Исправлено 1 раз(а). Последнее : of63, 31.10.22 00:53
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
of63

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
of63
Ни разу не пользовался оператором "::".
А каким способом ты "делаешь" дочерний метод на основе родительского?
Допустим, тебе надо добавить пару строк к методу родителя.

> каким способом ты "делаешь" дочерний метод на основе родительского?
Да! Каким? )
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Ты умеешь? Добавить к методу?
Это описка, даже не спрашиваю. К методу пару строк нельзя "добавить"
Ну какая описка? Я же не учебник для первоклассников пишу.

1) Есть код метода родителя.
2) В дочернем классе тебе нужно немного изменить код этого метода, а именно - сделать ещё кое-что, добавив пару строк.

Какой код ты напишешь в дочернем методе для решения этой задачи?

of63
Свойства (имя и значение) добавляем и понимаем )
Так кроме свойств у класса есть и методы (события).
Их что, нельзя добавлять, изменять и понимать?



Исправлено 2 раз(а). Последнее : akvvohinc, 31.10.22 11:01
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
akvvohinc
Какой код ты напишешь в дочернем методе для решения этой задачи?

Что-то мне помнится, в бытность я в таких случаях писал dodefault() плюс пару строк кода.
Ratings: 0 negative/0 positive
Re: Перепрыгнуть метод
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Причем, так и перед кодом можно. Можно 2 раза dodefault() написать, и даже больше.
В ифах-элсах, в циклах. И это еще не все...



Исправлено 1 раз(а). Последнее : Ydin, 31.10.22 20:38
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 19 (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика