줄리아에서 가변 인자 함수 정의하는 법
개요 1
가변인자 함수란 보통 프로그래밍에서 Varargs Function이라 불리는 것으로, 복수의 인자가 제한 없이 들어올 수 있는 함수를 말한다. 줄리아에서는 간단히 변수 뒤에 ...
을 찍는 것으로 가변 인자를 정할 수 있다. 예제 코드를 보고 이해해보자.
참고로 이 ...
을 스플랫 오퍼레이터splat Operator 라 부른다.2
코드
아이작 뉴턴은 간단히 팩토리얼의 역수를 더하면 $e$ 에 수렴하는 다음의 정리를 발견했다. $$ e = {{ 1 } \over { 0! }} + {{ 1 } \over { 1! }} + {{ 1 } \over { 2! }} + \cdots = \sum_{k=0}^{\infty} {{ 1 } \over { k! }} $$ 이 예제에서는 오일러 상수 $e = 2.71828182 \cdots$ 로 수렴하는 수열을 보려고 한다.
function f(x...)
zeta = 0
for x_ in x
zeta += 1/prod(1:x_)
end
return zeta
end
위와 같이 x
뒤에 점을 찍어 x...
라 쓰면 주어지는 인자들을 알아서 배열로 생각해준다. 함수의 내용은 위 수식에서 보이는바와 같이 순서대로 팩토리얼의 역수를 취해 더해서 리턴하는 게 전부다.
julia> f(0)
1.0
julia> f(0,1)
2.0
julia> f(0,1,2)
2.5
julia> f(0,1,2,3,4,5,6,7,8,9,10)
2.7182818011463845
실행결과는 위와 같이 자연수를 길게 줄수록 오일러 상수에 가까워지는 것을 확인할 수 있다. 여기서 주목할 점은 가변적으로 들어간 인자들이 알아서 x
라는 배열로 묶여서 사용되었다는 점이다. 예컨대 다음과 같이 개념적으로 배열을 집어넣으면 에러를 낼 수 있다.
julia> f(0:10)
ERROR: MethodError: no method matching (::Colon)(::Int64, ::UnitRange{Int64})
환경
- OS: Windows
- julia: v1.6.3