logo

줄리아에서 함수로 구조체의 프로퍼티 참조하는 법 📂줄리아

줄리아에서 함수로 구조체의 프로퍼티 참조하는 법

개요

줄리아에서 구조체의 프로퍼티를 참조하는 방법은 크게 두 가지가 있다. 문법적인 편의나 실제 용도에 따라 적절하게 사용해야한다.

코드

예시로써 줄리아에서 // 연산자는 다음과 같이 유리수(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