Множественная диспетчеризация
Множественная диспетчеризация — одно из главных преимуществ Julia: она обеспечивает гибкость и повышает производительность ваших программ. Напомним: множественная диспетчеризация позволяет выполнять разный метод в зависимости от типа аргумента, переданного в функцию.
В примере из видео множественная диспетчеризация использовалась для возврата разных значений в зависимости от того, является ли аргумент строкой или нет.
function add_values(x, y)
x + y
end
function add_values(x::String, y::String)
x * y
end
Это упражнение является частью курса
Средний уровень Julia
Инструкции к упражнению
- Создайте функцию
largest_value, которая:- если входные данные имеют тип
String, применяетmapдля отображения функцииlengthна каждый аргумент(x, y, z); - если входные данные имеют тип
Bool, просто возвращает аргументы; - если входные данные имеют любой другой тип, находит максимальное значение среди всех аргументов с помощью
maximum.
- если входные данные имеют тип
- Удалите закомментированные строки в нижней части кода (тестовые случаи) и проверьте, что логика работает правильно!
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create three functions to handle any input, String input, and Bool input
function largest_value(x, y, z)
maximum((____, ____, ____))
end
function largest_value(x::____, y::____, z::____)
map(length, (____, ____, ____))
end
function largest_value(x::____, y::____, z::____)
x, y, z
end
# Un-comment this test case to test your function
#println(largest_value("12", "24", "36"))