Rebol에서 임의의 구조화 된 데이터를 나타내는 블록을 사용할 것으로 예상됩니다. 블록을리스트가 아닌 데이터 구조로 취급하는 내장형 또는 표준 방식이 있습니까? 내가 생각하고블록을 Rebol의 다양한 데이터 구조로 사용
:
- 스택
- 큐 (아마도 더블 엔디드)
- 세트는
- 일명 매핑합니다. 연관 배열
Rebol에서 임의의 구조화 된 데이터를 나타내는 블록을 사용할 것으로 예상됩니다. 블록을리스트가 아닌 데이터 구조로 취급하는 내장형 또는 표준 방식이 있습니까? 내가 생각하고블록을 Rebol의 다양한 데이터 구조로 사용
:
Rebol에는 모든 데이터를 동일한 방식으로 처리 할 수있는 임의의 데이터 보유자가 있습니다.
당신은
insert append index? find poke select ...
과 같은 방법으로 그들에 운영 키하지만 그들은 결과에서 특히 응답 시간이 조금 다릅니다. 귀하의 경우에는
는
위에서 언급 한 모든 기능은 비슷하게 작동합니다 (해시도 인덱스로 참조 할 수 있음). 따라서 이들 중 하나를 연관 배열로 처리 할 수 있습니다.
>> x: [a one b two c 33]
== [a one b two c 33]
>> x/a
== one
>> x/c
== 33
>> select x 'b
== two
>> pick x 4
== two
이는 해시와 완전히 동일합니다. x: hash! [a 1 b 2 33]
으로 정의됩니다. 따라서 새로운 키 값 쌍을 추가하려면 다음을 수행하십시오.
>> x: make hash! [ a 1 b 2 c 33]
== make hash! [a 1 b 2 c 33]
>> append x [ key value ]
== make hash! [a 1 b 2 c 33 key value]
>> x/key
== value
>> select x 'key
== value
>> pick x 8
== value
리콜에는 키 값 쌍인 해시가 없습니다. 내부적으로 해쉬를 생성하는 정렬 된 값 목록 일뿐입니다! 참조 값. 그러므로 당신은 단지뿐만 아니라 정제 당신은 또한 객체를 사용할 수있는 연관 배열에 대한
>> select/skip x 33 2
== none
건너 뛰기, 정말 키 값 쌍을 위해 그것을 사용하려면
>> select x 33
== key
위의 값 (33)을 다음과 무엇을 물어 사용할 수 있습니다! 동적 인 필드를 가질 필요가없는 경우에 대비해.
연관 구조의 경우 특정 키에 값을 삽입하는 기능은 무엇입니까? – dukereg
@dukereg 내 업데이트보기 – joing
스택의 내장 함수를 사용하여 블록의 같은 끝에서 삽입 및 삭제하는 방법은 분명하지 않습니다. – dukereg