구조체 LIST

게시판 IDL Q&A 구조체 LIST

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 2 월, 1 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5497 답변

    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에 의해 2 월, 2 주 전에 수정됐습니다.
    • 이 게시글은  ChoiYoun에 의해 2 월, 2 주 전에 수정됐습니다.
  • #5500 답변

    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

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

'구조체 LIST'에 답변달기
글쓴이 정보: