줄리아의 느낌표 컨벤션
개요 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