Funções e argumentos variádicos: implementações nas linguagens
Numa dessas discussões de dev do dia-a-dia com o Marcio Rodrigues, surgiu a curiosidade sobre como outras linguagens lidam com a variância da quantidade de parâmetros esperados ou a serem passados.
Esse aspecto nas linguagens de programação é chamado de função variádica.
Segue abaixo a lista com algumas linguagens, como são chamadas as aplicações desse aspecto e como são aplicadas da maneira mais simples, sempre com um link de referência.
As versões foram desconsideradas e a lista pode ser atualizada a qualquer momento :]
JavaScript
Função variádica (rest parameters)
function minhaFuncao(...args) {}
Argumentos variádicos (spread operator)
const objIteravel = [1, 2, 3]
minhaFuncao(...objIteravel)
PHP
Função variádica (ellipsis token/operator)
function minhaFuncao(...$args) {}
Argumentos variádicos (unpack/splat operator)
$objIteravel = [1, 2, 3];
minhaFuncao(...$objIteravel);
Python
Função variádica (unpack operator)
def minhaFuncao(*args):
Argumentos variádicos (unpack/splat operator)
objIteravel = [1, 2, 3]
minhaFuncao(*objIteravel)
Ruby
Função variádica (unpack operator)
def minhaFuncao(*args)
end
Argumentos variádicos (unpack/splat operator)
objIteravel = [1, 2, 3]
minhaFuncao *objIteravel
Scala
Função variádica (repeated parameters)
def minhaFuncao(args: Any*) {}
Argumentos variádicos (sequence argument)
var objIteravel = Array(1, 2, 3)
minhaFuncao(objIteravel: _*)
Java
Função variádica (varargs)
public static void minhaFuncao(Integer... args) {}
C++
Função variádica (ellipsis argument)
#include <cstdarg>int minhaFuncao(int args, ...){}
Go
Função variádica (variadic functions)
func minhaFuncao(args ...int) {}
Argumentos variádicos (variadic argument)
objIteravel := []int{1, 2, 3, 4}
minhaFuncao(objIteravel...)
Groovy
PS: código do Groovy gentilmente enviado pelo camarada Felipe Mamud.
Função variádica (varargs)
def minhaFuncao(int... args) {}
Argumentos variádicos (spread operator)
def objIteravel = [1,2,3,4,5]
minhaFuncao(*objIteravel)
Para saber mais
O site Rosetta Code demonstra algoritmos e soluções para vários problemas em mais de 600 linguagens. Lá você pode ver a aplicação de funções variádicas também em outras linguagens.