Category:LSL Negative Index/ko

From Second Life Wiki
Jump to: navigation, search

음의 색인은 끝에서 시작해서 거꾸로 세어나간다.

string s = "Hello World"의 경우,

  • 색인 0은 'H' (llGetSubString(s,0,0))
  • 색인 -1은 'd' (llGetSubString(s,-1,-1))
  • 색은 -5은 'W' (llGetSubString(s,-5,-5))

음의 색인은 매우 단순하며, LSL은 음의 색인을 양의 색인의 반대 처럼 다룬다.
n_indstr의 음의 색인이라 하면 n_ind의 양의 형식은 n_ind + llStringLength(str);
p_indstr의 양의 색인이라 하면 p_ind의 음의 형식은 p_ind - llStringLength(str);

이 분류에 속한 함수들과 llListFindListllSubStringIndex의 결과들을 활용할 때에는 주의를 기울여야 한다. 해당 함수들은 '찾지 못함'의 결과로 -1을 반환하는데, 이것은 실제로 유효한 색인이지만 원하는 결과값은 아닐 것이다.

<lsl> string s = "Hello World";

integer index = llSubStringIndex(s, "t");//index == -1 if(~index)//(index != -1)와 같지만 조금 더 빠르다. '~'은 비트를 뒤바꾸며 (-1 == all on)이므로 (~-1 == all off)이다. {

   s = llDeleteSubString(s, index, index);

} </lsl>

범위 함수

목록

문자열

복잡한 경우는 범위 함수가 두 개의 색인을 취하면서 색인 범위에 대한 연산자를 가질 때인데, 이 때 시작에 해당하는 두 매개변수 색인을 갖는다. 여기서 음의 색인은 양의 색인을 거꾸로 돌려놓은 것 처럼 다루어진다.

  • 만약 start <= end이면 함수에서 움직이는 색인의 범위는 [start, end].
  • 만약 start > end이면 함수에서 움직이는 색인의 범위는 [0, end] + [start, ]


다중 색인을 변수길이 문자열, 목록과 함께 사용하면 복잡하게 엉킬 수 있는데, 색인의 방향이 길이에 따라서 역전 될 수도 있다. 이 점을 명심해서 시작점에서 출발하는 색인과 끝점에서 출발하는 색인을 함께 사용할 때 유의해야한다.

<lsl>string bad(string in) {

   return llGetSubString(in, 5, -5);

}

bad("Hello World!");//범위 [5, 8]에 해당하는 " Wo"를 반환한다 bad("Hello Cat!");//범위 [5, 5]에 해당하는 " "를 반환한다 bad("Hello !");//범위[0, 2] + [5, 6]에 해당하는 "Hel !"를 반환한다</lsl>

Pages in category "LSL Negative Index/ko"

The following 6 pages are in this category, out of 6 total.