НачатьНачать бесплатно

Множественная диспетчеризация

Множественная диспетчеризация — одно из главных преимуществ 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"))
Редактировать и запускать код