줄리아에서 함수로 구조체의 프로퍼티 참조하는 법
개요
줄리아에서 구조체의 프로퍼티를 참조하는 방법은 크게 두 가지가 있다. 문법적인 편의나 실제 용도에 따라 적절하게 사용해야한다.
코드
예시로써 줄리아에서 //
연산자는 다음과 같이 유리수(Rational
) 타입의 수를 만들어준다. 유리수가 가지는 프로퍼티의 이름으로는 분자numerator를 의미하는 :num
과 분모denominator를 의미하는 :den
이 있다.
julia> q = 7 // 12
7//12
julia> q |> typeof
Rational{Int64}
julia> q |> propertynames
(:num, :den)
getproperty(x, :y)
와 x.y
julia> getproperty(q, :den)
12
julia> q.den
12
기본적으로는 getproperty()
함수의 두번째 인자로써 해당 프로퍼티의 이름을 심볼로 주면 된다. 혹은 보편적인 프로그래밍 언어들에서 필드, 프로퍼티에 참조하듯 오브젝트 변수명 뒤에 점을 찍어서 해당 프로퍼티에 접근할 수 있다.
배열에 대한 프로퍼티 참조
한편 위의 방법은 딱 한 번 필요할 때나 사용할 수 있는 방법이고, 배열에 있는 여러 원소에 접근해야한다면 다음과 같이 브로드캐스트를 이용해야한다. 혹은 성능이 중요하지 않고 그냥 빠른 코딩이 필요할 땐 파이썬처럼 리스트 컴프리헨션을 사용하는 것도 한가지 방법이다.
julia> Q = [k // 12 for k in 1:12]
12-element Vector{Rational{Int64}}:
1//12
1//6
1//4
1//3
5//12
1//2
7//12
2//3
3//4
5//6
11//12
1//1
julia> getproperty.(Q, :num)
12-element Vector{Int64}:
1
1
1
1
5
1
7
2
3
5
11
1
julia> [q.num for q in Q]
12-element Vector{Int64}:
1
1
1
1
5
1
7
2
3
5
11
1
전체코드
q = 7 // 12
q |> typeof
q |> propertynames
getproperty(q, :den)
q.den
Q = [k // 12 for k in 1:12]
getproperty.(Q, :num)
[q.num for q in Q]
환경
- OS: Windows
- julia: v1.9.0