- This topic has 1개 답변, 2명 참여, and was last updated 5 years, 2 months 전에 by Sangwoo.
-
글쓴이글
-
-
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 매서드 사용방법을 잘 모르겠습니다.
-
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_priceEXT_PRICE INT = Array[3]
100 200 300이와 같은 방식으로 처리하면 될 것 같습니다.
-
-
글쓴이글