logo

줄리아 스플랫 오퍼레이터를 통한 옵션 인자 전달 팁 📂줄리아

줄리아 스플랫 오퍼레이터를 통한 옵션 인자 전달 팁

개요

줄리아에서 스플랫 ...의 용도 중 가장 빈번하게 사용되는 옵셔널 아규먼트 전달 법에 대해서 설명한다. 기본적으로 네임드튜플의 형태로 어떤 옵션에 어떤 인자를 넣을지 미리 정한 후 그 튜플에 스플랫 오퍼레이터를 취하는 방식으로 사용한다.

코드

여러 함수에게 전달

args1 = (; dims = 1)

위의 네임드튜플 args1dims라고 하는 옵셔널 아규먼트가 있는 모든 함수에 공통적으로 사용할 수 있다. 다음의 예에서 sum()minimum()은 전혀 다른 함수지만 공통적으로 dims를 가지고 있어 함수의 종류와 관계없이 적용되었다.

julia> sum(rand(100,100); args1...)
1×100 Matrix{Float64}:
 47.0704  45.7637  44.4513  48.2325  50.5745  51.9176  …  49.9548  47.6825  50.7284  50.0861  50.0168  50.5116

julia> minimum(rand(100,100); args1...)
1×100 Matrix{Float64}:
 0.00702003  0.0163299  0.00665818  0.0174564  0.00589048  …  0.002967  0.00460205  0.0116248  0.0114521  0.0698425

여러 인자를 전달

args2 = (; dims = 2, rev = true)

위의 네임드튜플 args2dims에 더불어 rev라는 옵셔널 아규먼트를 포함한다. 다음의 예에서 sort() 함수는 들어온 데이터와 관계 없이 두 가지 옵션을 잘 반영해서 계산 결과를 리턴했다.

julia> sort(rand(0:9, 3,3); args2...)
3×3 Matrix{Int64}:
 9  4  4
 6  5  2
 8  0  0

julia> sort(rand(3,3); args2...)
3×3 Matrix{Float64}:
 0.438682  0.211154  0.108741
 0.72113   0.445214  0.00910109
 0.971441  0.666732  0.0227372

전체코드

args1 = (; dims = 1)
sum(rand(100,100); args1...)
minimum(rand(100,100); args1...)

args2 = (; dims = 2, rev = true)
sort(rand(0:9, 3,3); args2...)
sort(rand(3,3); args2...)

환경

  • OS: Windows
  • julia: v1.8.3