Função apply
A função apply é utilizada para realizar a invocação de funções utilizando argumentos que estão contidos dentro de uma sequência.
Sua principal utilidade ocorre quando os dados necessários para uma função são fornecidos como uma coleção, mas a função alvo espera receber os valores como argumentos individuais.
O funcionamento básico do apply consiste em “desempacotar” os elementos de uma sequência para passá-los à função.
Important
O último argumento passado para a função
applydeve obrigatoriamente ser uma sequência.
Sintaxe e Equivalência
A função apply aceita zero ou mais argumentos fixos antes de processar a sequência final de argumentos.
Todas as chamadas abaixo resultam na mesma operação final (f 1 2 3 4), equivalente a :
(apply f '(1 2 3 4))(apply f 1 '(2 3 4))(apply f 1 2 '(3 4))(apply f 1 2 3 '(4))
Observe que a transição entre argumentos fixos e a sequência final é transparente, desde que o encerramento da chamada seja uma coleção.
Este comportamento é particularmente útil em Funções Variádicas, onde é comum receber e repassar sequências de argumentos.
Exemplo
O uso de apply simplifica o código ao evitar a extração manual de elementos de uma estrutura de dados.
Em vez de acessar elementos individualmente (como usar first ou second), é possível delegar a distribuição dos valores diretamente para a função de destino.
Sem apply:
(plotxy shape (first coords) (second coords))Com apply:
(apply plotxy shape coords)Essa técnica torna as definições de funções mais limpas e menos suscetíveis a erros de indexação manual em coleções.
Referências
https://clojure.org/guides/learn/functions#_applying_functions