LlListReplaceList/ko

From Second Life Wiki
< LlListReplaceList
Revision as of 00:43, 12 April 2009 by Nanjido Oh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

설명

함수: list llListReplaceList( list dest, list src, integer end, integer start );
296 함수ID
0.0 지연
10.0 에너지

반환되는 값은 목록 dest의 색인 start에서 end까지가 src로 삽입 치환된 새로운 목록.

• list dest 결과
• list src 원본
• integer end end 색인
• integer start start 색인

start & end음의 색인을 지원한다.

명세

색인
처음 0 -length
마지막 length - 1 -1

우선 임의의 음수 색인은 양수 색인으로 먼저 생각한다

  • 만약 start <= end이면 적용 범위는 start에서 시작하여 end에서 끝난다.[start, end]
  • 만약 start > end이면 적용 범위는 0에서 시작하여 end를 지난 뒤 다시start에서 출발하여 -1로 간다. [0, end] + [start, -1]

(마지막 색인보다 큰) 전체 길이 이전의 양의 색인, 또는 (첫 색인보다 전방에 위치한) 시작점 이전의 음의 색인 만이 유효하다. 효과는 예측가능하며 항목들은 어딘가에 실제로 존재하는 것 처럼 다루어지지만, 실은 출력 이전에 모두 삭제된다.

더 자세한 정보는 음의 색인을 참조.

만약 startdest의 마지막 색인 보다 크면, src는 빈 원소 없이 dest의 뒤에 연결된다. 이것을 피하려면 목록의 후미에 빈 원소들을 먼저 생성해서 붙여야 한다. 음의 색인을 사용할 때에도 같은 식으로 작동한다.

주의

  • (결과를 곧바로 다시 이용하는 경우가 아니라면) 함수를 호출하는 것 만으로는 값이 갱신되지 않으며 저장을 할 변수가 있어야 한다.
• 나쁨: llListReplaceList(a, ["c"], 2, 2)
• 좋음: a = llListReplaceList(a, ["c"], 2, 2)
  • 같은 목록을 저장할 경우 저장하기 전 목록을 비우는 것이 메모리 사용에 더 효율적이다.
• 좋음: a = llListReplaceList(a, ["c"], 2, 2)
• 더 좋음: a = llListReplaceList((a = []) + a, ["c"], 2, 2)

예제

<lsl>default {

   state_entry()
   {
       list a = ["a", "b", "e", "d"];
       list b = llListReplaceList(a, ["c"], 2, 2);
       //색인 2에서 출발해서 2에서 끝나는 범위를 ["c"]로 치환하고 b에 저장한다.
       llOwnerSay("\""+llList2CSV(a) + "\"  ->  \"" + llList2CSV(b)+"\"");//변경되는 것을 출력
       //출력: "a, b, e, d"  ->  "a, b, c, d"
   }

}</lsl>

기록

확실한 동작을 위해서는 치환하려는 목록은 너무 많은 원소를 갖고 있어서는 안된다. 단일 항목을 대괄호로 감싸면 단 하나의 원소를 갖는 목록이 만들어진다.

<lsl>list TargetList = ["a", "b", "c", "z", "e"]; list InsertList = ["d"];</lsl>

목록에서 하나의 원소만 치환을 하려면 해당 원소를 지시하는 시작과 끝의 색인을 같게 하면 된다. 이를테면 0, 0은 첫 번째 원소에7, 7 은 8번째 원소에만 작용을 하게 된다.

llListReplaceList와 같이 작동하지만 절편 목록에 대해 그와 같은 일을 하려면 ListStridedUpdate를 참고할 것.

함께 보기

함수

• llDeleteSubList
• llListInsertList
• llList2List

문서

•  Negative_Index

상세 기록

이 글이 유용하지 않으세요? LSL Wiki의 관련항목이 도움을 줄 수 있을 지도 모릅니다.