julia에 dot 연산자라고, 배열안의 요소별로 각각 연산해주는것이 있다. 예시로 백터를 생성후 요소값들을 각각 하나씩 더하고 싶을때 보통은 for문등 방법을 사용하는게 보통이다.
julia> x = [1,2,3,4,5]
#output
#5-element Vector{Int64}:
# 1
# 2
# 3
# 4
# 5
julia> i = 1
julia> while i <= 5
x[i] = x[i]+2
global i += 1
end
julia> x
#output
#5-element Vector{Int64}:
# 3
# 4
# 5
# 6
# 7
허나 julia에서는 dot 연산자를 사용해 한줄코드로 간단하게 사용할수 있다.
julia> x .+ 2
#output
#5-element Vector{Int64}:
# 3
# 4
# 5
# 6
# 7
또한 julia에서는 “@.“라는 매크로가 존재하는데, 계산식에 많은 dot(.)이 있을경우 표현식의 길이가 길어질수 있는데, 해당 매크로를 사용하면 dot를 각 연산자마다 사용할 필요가 없어져서, 표현식이 더 간결해질수 있다.
julia> x = [1,2,3]
#output
#3-element Vector{Int64}:
# 1
# 2
# 3
julia> 2 .* x.^2 .+ sin.(x)
#output
#3-element Vector{Float64}:
# 2.8414709848078967
# 8.909297426825681
# 18.14112000805987
julia> @. 2 * x^2 + sin(x)
#output
#3-element Vector{Float64}:
# 2.8414709848078967
# 8.909297426825681
# 18.14112000805987
주의
#자세한 이유는 모르나 인덱스를 1부터 시작하는걸로 보인다
#인텍스를 0으로 해서 첫번째 요소를 읽을라고 하면 오류가 발생한다.
julia> x[0]
#output
#ERROR: BoundsError: attempt to access 5-element Vector{Int64} at index [0]
#Stacktrace:
# [1] getindex(A::Vector{Int64}, i1::Int64)
# @ Base ./array.jl:801
# [2] top-level scope
# @ REPL[38]:1