구조체 LIST

게시판 IDL Q&A 구조체 LIST

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5497 Reply
      ChoiYoun
      회원

      안녕하세요.

      중간에 자료를 제거하는 형태의 프로그램을 만들고자 LIST형 변수를 구조체와 함께 이용하려는 중입니다.

      name_arr = [‘AAA’, ‘BBB’, ‘CCC’]
      price_arr = [100, 200, 300]
      temp_data = {name: ”, price: 0}
      data = LIST()
      for i = 0, 2 do begin
      temp_data.name = name_arr[i]
      temp_data.price = price_arr[i]
      data.add, temp_data
      endfor

      대략적으로 위와 같은 형태의 data 변수를 만들었는데, (가령 이름 값만 추출하고 싶을 때) 아래와 같이 사용하면 오류가 발생합니다.

      extract_name = data[*].name

      구조체 LIST(LIST 구조체?)에서 배열형태로 변수를 받고 싶으면 어떻게 해야 하나요?

      ps. 위와 같은 구조체 형태일 때 ToArray 매서드 사용방법을 잘 모르겠습니다.

      • 이 게시글은 ChoiYoun에 의해 3 years, 5 months 전에 수정됐습니다.
      • 이 게시글은 ChoiYoun에 의해 3 years, 5 months 전에 수정됐습니다.
    • #5500 Reply
      Sangwoo
      회원

      위의 내용에서 data는 3개의 구조체들을 담은 리스트가 됩니다. 그런데 각 구조체로부터 name이라는 필드의 값들만 추출하려면, 리스트에 대하여 ToArray 메서드를 사용하여 구조체 배열을 추출한 후 위와 유사한 인덱싱을 해야 합니다. 리스트에 포함된 상태에서는 직접적인 추출은 안됩니다. 그러므로 먼저 다음과 같이 리스트에 대하여 ToArray 메서드를 사용하여 구조체 배열(Structure Array)을 추출합니다.

      result = data.ToArray()
      HELP, result
      PRINT, result

      추출된 정보를 확인해보면 다음과 같습니다.

      RESULT STRUCT = -> <Anonymous> Array[3]
      { AAA 100}{ BBB 200}{ CCC 300}

      이것은 result가 구조체 3개로 구성된 일종의 구조체 배열이라는 뜻입니다. 이 상태에서는 다음과 같이 name이라는 필드명을 통하여 값들에 접근할 수 있습니다.

      ext_name = result[*].name
      HELP, ext_name
      PRINT, ext_name

      이렇게 하면 다음과 같은 정보가 출력됩니다. 3개의 문자값들로 구성된 문자형 배열을 얻게 됨을 알 수 있습니다.

      EXT_NAME STRING = Array[3]
      AAA BBB CCC

      유사한 요령으로 price 필드의 값들도 추출하여 3개의 정수값들로 구성된 정수형 배열을 얻을 수도 있습니다.

      ext_price = result[*].price
      HELP, ext_price
      PRINT, ext_price

      EXT_PRICE INT = Array[3]
      100 200 300

      이와 같은 방식으로 처리하면 될 것 같습니다.

1 답변 글타래를 보이고 있습니다
'구조체 LIST'에 답변달기
글쓴이 정보: