줄리아의 느낌표 컨벤션

줄리아의 느낌표 컨벤션

Bang Convention in julia

개요 1

줄리아에서 함수 이름의 가장 마지막에 느낌표Bang !을 넣는 것을 뱅 컨벤션이라 한다. 이러한 함수들은 입력받은 인수를 수정하는 특징을 가진다.

코드

function add_1!(x)
    x .+= 1
    return x
end

foo = [2,5,-1]
add_1!(foo)
foo

예를 들어 위의 코드를 실행하면 다음과 같은 결과를 얻는다.

julia> foo = [2,5,-1]
3-element Vector{Int64}:
  2
  5
 -1

julia> add_1!(foo)
3-element Vector{Int64}:
 3
 6
 0

julia> foo
3-element Vector{Int64}:
 3
 6
 0

배열 foo는 함수 밖에서 정의되었고 add_1!()에 의해 성분이 $1$씩 더해져서 리턴되었을 뿐만 아니라 인수 자체가 수정되었다.

설명

대표적인 메소드인 pop!()은 배열의 마지막 원소를 삭제하는 동시에 반환하는데, 이 함수 자체가 원래의 배열을 건드리지 못한다면 매트랩이나 R이 그러하듯 널리 알려진 자료구조를 사용하기 어려워 일반적인 프로그래밍에 익숙한 사용자들이 많이 불편했을 것이다.

파이썬에서 함수가 아닌 메소드를 사용했을 때 클래스의 데이터까지 변경되는 것과 비슷한 느낌으로 받아들이면 된다. 줄리아는 언어 설계 상 클래스를 지원하지 않기 때문에 정확한 설명은 아니지만, 오히려 파이썬에서 쓰던 메소드가 편할 떄 요긴하게 쓸 수 있다.

환경

  • OS: Windows
  • julia: v1.7.0

  1. https://docs.julialang.org/en/v1/manual/style-guide/#bang-convention ↩︎

댓글