앱인벤터 공통블록-dictionares블록
앱인벤터의 코딩블록에 대해 살펴보고자 한다. 그중에 공통블록에서 제공하는 블록중 dictionaries블록에 대해 살펴보고자 한다.
지도, 연관 배열 또는 리스트와 같은 다른 언어 용어로 불리는 dictionaries(사전)은 종종 키라고 불리는 하나의 값을 다른 값과 연관시키는 데이터 구조이다. 키와 갑을 쌍으로 표현되며, 사전을 표시하는 일반적인 방법은 자바스크립트 객체 표기법(JSON)을 사용한다.
아래는 키와 값의 쌍으로 표현한 자바스크립트 객체표기법(JSON)을 예시한 것이다.
{
"id": 1,
"name": "Tim the Beaver",
"school": {
"name": "Massachusetts Institute of Technology"
},
"enrolled": true,
"classes": ["6.001", "18.01", "8.01"]
}
<<출처 : appinventor 홈페이지>>
상기의 값들을 앱인벤터 dictionaries블럭으로 아래 그림과 같다.
Dictionaries 블록
. create empty 블록
빈 dictionaries 만들기 블록은 키-값 쌍 없이 사전을 만든다. 추후에 키 블록에 대한 설정 값을 사용하여 빈 dictionaries에 항목을 추가할 수 있다. 빈 dictionaries 만들기 블록은 파란색 변환기 단추를 사용하여 쌍 항목을 추가하여 사전 만들기 블록으로 전환할 수도 있다.
. make a dictionary 블록
사전 만들기는 미리 알려진 쌍 집합으로 사전을 만드는데 사용된다. 키에 대한 설정 값을 사용하여 항목을 추가할 수 있다.
입력값은 키와 값 쌍의 집합으로 구성되어 있다.
. pair 블록
dictionaries 만드는데 사용되는 특정한 목적의 블록이다.
. get value for key 블록
get value for key 블록은 dictionaries에 지정된 키에 해당하는 값이 포함되어 있는지 확인한다. 값을 찾았을 경우, 값이 반환됩니다. 그렇지 않으면 "not found" 값이 반환된다. 이 동작은 pair 로 구성된 블록의 lookup 동작과 유사하다.
. set value for key 블록
set value for key블록은 dictionaries에서 지정된 키에 해당하는 값을 값으로 설정한다. 키에 대한 매핑이 없으면 새 매핑이 만들어진다. 그렇지 않으면 기존 값이 새 값으로 바뀐다.
. remove entry for key 블록
remove entry for key 블록은 지정된 키에 대한 dictionaries의 키-값 매핑을 제거한다. 키에 대한 항목이 dictionaries에 없는 경우, 사전은 수정되지 않는다.
. get value at key path 블록
get value at key path 블록의 get value는 키 블록의 get value의 고급 버전이다. 특정 키의 값을 가져오는 대신 데이터 구조를 통과하는 경로를 나타내는 유효한 키와 숫자 목록을 가져온다. 키 블록의 get 값은 키가 들어 있는 길이 1의 키 경로와 함께 이 블록을 사용하는 것과 같다.
"아래 예제 JSON 파일인 경우, get value for key 블록은 "팀 더 비버"를 반환합니다.
또 다른 예제로 school과 name의 key path를 통해 얻는 값은 "Massachusetts Institute of Technology" 이다.
또 다른 예제로 classes와 2값의 key path를 통해 얻는 값은 "18.01" 값을 반환한다.
. get keys, values 블록
dictionaries내의 key 리스트를 반환하는 블록이다.
dictionaries내의 값을 포함하는 리스트 반환하는 블록이다. 리스트에서 값의 내용을 수정하면 dictionaries에서도 값이 수정된다.
. is key in dictionary 블록
dictionaries 내에 키가 존재하는지 테스트하여 있으면 참값을, 없으면 거짓값을 반환한다.
. size of dictionary 블록
sizeof dictionary블록은 dictionaries 내에 있는 key-value 쌍의 수를 반환한다.
. list of pairs to dictionary 블록
dictionary 블록에 대한 pair 리스트는 (key1 value1) (key2 values2)..., 형식의 연관 리스트를 키에 값을 매핑하는 dictionary로 변환한다. dictionary는 연관 목록보다 더 나은 조회 성능을 제공하므로 데이터 구조에 대해 많은 작업을 수행하려는 경우 이 블록을 사용하여 연관 목록을 dictioanry로 먼저 변환하는 것이 좋다.
. dictionary to list of pairs 블록
pairs 리스트에 대한 dictionary는 dictionaryfmf 연관 리스트로 변환한다. 이 블록은 pair 리스트에 의해 수행된 변환을 dictionary 블록으로 되돌린다.
아래 그림은 예제이다.
. copy dictionary 블록
copy dictionary블록은 주어진 dictionary의 깊은 복사본을 만든다. 즉, 모든 값이 재귀적으로 복사되고 복사본에서 값을 변경해도 원본에서는 변경되지 않는다.
. merget into dictionary 블록
dictionary 블록에서 dictionary로 병합하면 한 dictionary에서 다른 dictioanry로 키-값 쌍을 복사하여 대상 사전에 있는 모든 키를 덮어쓴다.
. list by walking key path 블록
list by walking key path 블록별 리스트는 get value at key path블록과 유사하게 작동하지만, 단일 값을 반환하는 대신 값 리스트을 만든다. 그것은 주어진 dictionary에서 시작하여 주어진 경로를 따라 오브젝트 트리를 따라 내려가면서 작동한다. key path의 get value와는 달리, 그 path는 dictionary key, list index, 레벨 블록의 walk all의 세 가지 주요 유형으로 구성될 수 있다. 키 또는 인덱스가 제공된 경우, 트리의 해당 지점에서 특정 경로가 선택된다. 수준별 walking이 모두 지정된 경우 해당 지점의 모든 값이 연속(넓이 우선) 따라오고, 이때 보행이 경로의 다음 요소부터 계속된다. 전체 경로와 일치하는 요소가 출력 리스트에 추가됩니다.
아래 그림은 JSON 데이터와 블록의 예제이다.
글로벌 데이터에 JSON으로 대표되는 dictionary가 포함된 경우, list by walking key path 블록은 ["Tim", "Beaver"] 목록을 생성합니다. 먼저, "people"의 리스트인 "people" 태그의 값이 선택된다. 그런 다음 리스트의 첫 번째 요소가 선택됩니다. 마지막으로 레벨 블록에서 "walk all at level"는 해당 지점에서 객체의 값, 즉 "Tim"과 "Beaver" 값을 선택한다.
아래 그림의 블록처럼, 리스트에 포함된 수준에서 "walk all at level"를 사용할 수도 있다. 예를 들어, 다음 블록은 구조 내 모든 사람의 이름, 즉 [Tim, John, Jane]을 선택한다.
이 블록은 웹을 사용하여 구문 분석된 XML과 함께 사용할 수도 있다. XMLTextDecodeAsDictionary 블록 이다. 다음 XML 문서를 고려해보자.
다음 블록을 사용하여 첫날의 객실 이름 목록(예: [Hewlitt, "Bleil")을 가져올 수 있다.
. walk all at level 블록
walk all at level 블록은 list by walking key path 블록을 통해 리스트의 key path에 사용할 수 있는 특수 블록이다. walk 동안에 마주치면, 해당 수준의 모든 항목이 탐색된다. dictionary인 경우, 모든 값이 방문됨을 의미한다. 리스트의 경우, 리스트 내의 각 항목이 방문됨을 의미한다.
이것은 JSON 객체로 표현되는 데이터베이스에 있는 모든 사람의 이름과 같이 dictionary에 있는 리스트내의 항목에서 정보를 집계하는 데 사용될 수 있다. 예제는 list by walking key path 블록을 참조바랍니다.
. is a dictionary 블록
is a dictionary 블록은 주어진 입력값을 테스트하여 dictionary인지 테스트한다. dictionary이면 참값을, 아니면 거짓값을 반환한다.
이상으로 앱인벤터 공통블록 중 리스트블록에 대해 간략히 살펴보았다. 좀더 자세히 확인하기 싶으면, 각 블록을 활용한 간단한 예제들을 익히는 것을 추천한다. 눈으로 보는 것보다 직접 해보는게 여러모로 코딩하는데 이해하고 코딩 실력이 향상되는데 도움이 된다.
Just Do it!!!
Just Drag&Drop!!!
'앱인벤터 > 앱인벤터 컴포넌트' 카테고리의 다른 글
앱인벤터 공통블록-변수 블록 (0) | 2022.09.28 |
---|---|
앱인벤터 공통블록-색상 블록 (0) | 2022.09.27 |
앱인벤터 공통블록-리스트블록 (1) | 2022.09.24 |
앱인벤터 공통블록-텍스트블록 (1) | 2022.09.23 |
앱인벤터 공통블록-수학블록 (0) | 2022.09.22 |
댓글