native static final operator int &= ( out int A, int B );只要修改一下FScriptCompiler的GetToken()函式,增加辨識&=符號即可。
UBOOL FScriptCompiler::GetToken( FToken& Token, const FPropertyBase* Hint, UBOOL NoConsts ) { else { ... if ( PAIR('<','<') ... || PAIR('$','=') || PAIR('&','=') ) { ... } ... } } FName GAndEqual( TEXT("&=") );不過編譯器會把符號字串轉換成FName儲存,而且只尋找而不新增名稱,所以用上一行預先把&=符號加入名稱表。
接下來自訂運算子的部分其實就跟之前一樣了:
class MyOperator extends Object ntaive; native(233) static final operator(26) int &= ( out int A, int B ); function Test( int A, int B ) { local int aa; aa = A; A &= B; `log(A@"<="@aa@"&="@B); }實作碼:
IMPLEMENT_CLASS(UMyOperator); void UMyOperator::execAddEqual_IntInt( FFrame& Stack, RESULT_DECL ) { P_GET_INT_REF(A); P_GET_INT(B); P_FINISH; *(INT*)Result = (A &= B); }
沒有留言:
張貼留言