Vấn đề là như sau:Có thể gọi hàm quá tải từ chức năng ghi đè trong Julia không?
Tôi có một loại trừu tượng MyAbstract
và nguồn gốc các loại composit MyType1
và MyType2
:
abstract MyAbstract
type MyType1 <: MyAbstract
somestuff
end
type MyType2 <: MyAbstract
someotherstuff
end
tôi muốn chỉ định một số hành vi chung của các đối tượng của loại MyAbstract
, vì vậy tôi có một chức năng
function dosth(x::MyAbstract)
println(1) # instead of something useful
end
Hành vi chung này đủ cho MyType1
nhưng khi dosth
là gọi với một đối số kiểu MyType2
, tôi muốn có một số điều bổ sung để xảy ra trường hợp cụ thể cho MyType2
và, tất nhiên, tôi muốn sử dụng lại mã hiện, vì vậy tôi cố gắng điều sau đây, nhưng nó đã không làm việc:
function dosth(x::MyType2)
dosth(x::MyAbstract)
println(2)
end
x = MyType2("")
dosth(x) # StackOverflowError
Điều này có nghĩa là Julia không nhận ra nỗ lực của tôi đối xử với số x
giống như "siêu kiểu" của nó một thời gian.
Có thể gọi hàm quá tải từ chức năng ghi đè trong Julia không? Làm cách nào tôi có thể giải quyết vấn đề này một cách thanh lịch?
Cảm ơn bạn rất nhiều vì câu trả lời của bạn! Tôi đọc vào cuộc thảo luận bạn đã liên kết. Cái tên '@ callsuper' sẽ thể hiện ý tưởng của những gì tôi muốn làm rất tốt. – esel
Cảm ơn - đó là phản hồi hữu ích. Tôi nghĩ đó là tên tốt nhất cho đến nay. – StefanKarpinski