Проблема заключается в следующем:Можно ли вызвать перегруженную функцию из функции перезаписи в Julia?
У меня есть абстрактный тип MyAbstract
и производные сложные типы MyType1
и MyType2
:
abstract MyAbstract
type MyType1 <: MyAbstract
somestuff
end
type MyType2 <: MyAbstract
someotherstuff
end
Я хочу, чтобы указать некоторые общие поведение для объектов типа MyAbstract
, поэтому у меня есть функция
function dosth(x::MyAbstract)
println(1) # instead of something useful
end
Это общее поведение достаточно для MyType1
но когда dosth
является вызывается с аргументом типа MyType2
, я хочу некоторые дополнительные вещи, чтобы случиться так, что являются специфическими для MyType2
и, конечно же, я хочу, чтобы повторно использовать существующий код, поэтому я попытался следующие, но это не сработало:
function dosth(x::MyType2)
dosth(x::MyAbstract)
println(2)
end
x = MyType2("")
dosth(x) # StackOverflowError
Это означает, что Джулия не признала мою попытку обработать x
как ее «супертип» в течение некоторого времени.
Можно ли вызвать перегруженную функцию из функции перезаписи в Джулии? Как я могу изящно решить эту проблему?
Большое спасибо за ваш ответ! Я прочитал обсуждение, которое вы связали. Имя '@ calluper' будет выражать идею того, что я хочу делать очень хорошо. – esel
Спасибо - это полезная обратная связь. Я думаю, что это лучшее имя. – StefanKarpinski