Odkrywam Julię, więc jestem początkującą. Teraz badam jego silnie typowane funkcje. Rozumiem, że nie widzę użycia abstrakcyjnych typów tablic. Pozwól mi wyjaśnić na przykładzie:Użycie Tablicy abstrakcyjnych typów w Julii
Załóżmy, że chciałbym utworzyć funkcję, która akceptuje tablice rzeczywistych, bez względu na jej konkretny typ. użyłbym:
function f(x::Array{Real})
# do something
end
Ta funkcja może nie być wywołana bez podnosząc f has no method matching f(::Array{Float64,1})
Chciałbym zadzwonić f([1,2,3])
lub f([1.,2.,3.])
tak długo, jak typ elementu jest prawdziwy.
Przeczytałem, że można promować lub konwertować macierz (np.
Czy jest jakaś inna alternatywa zamiast pozbycia się mocno wpisanego zachowania?
Dzięki.
Możesz zdefiniować funkcję parametryczną: 'function f {T <: Real} (x :: Array {T})'. To przechwyciłoby zarówno 'f ([1,2,3])' i 'f ([1., 2., 3.])'. –
Po prostu dodanie do komentarza @ user3580870: nie ma kary za wydajność związanej z funkcjami parametrycznymi. Jest to absolutnie integralna cecha Julii. –
Tak, dzięki za komentarz, masz rację. Miałem zamiar dodać tę alternatywę jako "żmudną alternatywę", ale w końcu tego żałowałem. To rozwiązanie mnie nie satysfakcjonuje, ponieważ nie można go używać do anonimowych funkcji. – TheSorcerer