Unreal script. Function.specification.

문자열 합쳐 할당하기

이런 스크립트 코드를 자주 보시게 될 겁니다:

for ( i = 0; i < Count; i++ )
{
if ( MyString != "" )
{
MyString = MyString + ", ";
}
MyString = MyString + NextArrayValue[i];
}
현재 문자열을 합쳐 할당하는 기능을 하는 문자열 연산자는 둘 있습니다:

native(322) static final operator(44) string $= ( out string A, coerce string B );
native(323) static final operator(44) string @= ( out string A, coerce string B);
위의 코드를 이렇게 다시 쓸 수도 있겠습니다:

for ( i = 0; i < Count; i++ )
{
if ( MyString != "" )
{
MyString $= ", ";
}
MyString $= NextArrayValue[i];
}
$= 연산자가 빠른 이유는 이렇습니다!

각 버전에 대해 실제로 벌어지는 일은 이렇습니다:

MyString = MyString + NextArrayValue[i];
왼쪽을 평가합니다; MyString 변수의 주소를 찾아봅니다.
오른쪽을 평가합니다; + 연산자를 인보크합니다. (execString_Concat)
MyString 변수의 주소를 찾아봅니다; 그 값을 + 연산자와 사용하기 위해 임시 버퍼에 복사해 넣습니다.
NextArrayValue (execArrayElement) 의 주소를 찾아봅니다; 그 값을 + 연산자와 사용하기 위해 임시 버퍼에 복사해 넣습니다.
두 임시 버퍼의 내용을 합치고; 그 문자열을 MyString 으로 복사합니다.
MyString $= NextArrayValue[i];

From. Udk. Reference.


Game Developer Leegoon copyright all right reserved since 2010.

Comments