Вы, вероятно, знаете, что в MEL Maya вы можете преобразовать строковое число в целое число, приведя его. Например:
string $Number_String="2";
int $Number_Integer=(int)$Number_String;
print "\n";
print ("The number in the string is: "+$Number_Integer);
print "\n";
print ("The next number should be: "+(++$Number_Integer));
Результат приведенного выше сценария будет:
Число в строке: 2
Следующее число должно быть: 3
Достаточно просто, верно? Функция приведения, однако, начинает действовать совсем по-другому, когда помещается внутрь al oop. Если вы попытаетесь использовать приведение в al oop, вы всегда получите последний номер, с которым столкнулся сценарий, и изменится только тогда, когда в строке будет обнаружен другой номер.
Если, например, я хотел выполнить приведение каждый символ строки с содержимым "ABC3DEF8GHI" в виде последовательности целых чисел, логически должен содержать:
ABC3DEF8GHI
00030008000
Но вместо этого я получаю:
ABC3DEF8GHI
00033338888
Как мне решить это? Это ошибка? Что я делаю не так?
Я включил пример для тех, кому интересно проверить:
{
string $InitString="This_Is_A_8_Test_String_5_Being_Casted_12_In_A_Loop3";
int $InitString_Size=size($InitString);
print "\n";
for ($CharCount=1;$CharCount<=$InitString_Size;$CharCount++)
{
string $CurChar=`substring $InitString $CharCount $CharCount`;
print $CurChar;
}
print "\n";
for ($CharCount=1;$CharCount<=$InitString_Size;$CharCount++)
{
string $CurChar=`substring $InitString $CharCount $CharCount`;
print ((int)$CurChar);
}
print "\n";
print "\n";
for ($CharCount=0;$CharCount<$InitString_Size;$CharCount++)
{
int $RevCharCount=$InitString_Size-$CharCount;
string $CurChar=`substring $InitString $RevCharCount $RevCharCount`;
print $CurChar;
}
print "\n";
for ($CharCount=0;$CharCount<$InitString_Size;$CharCount++)
{
int $RevCharCount=$InitString_Size-$CharCount;
string $CurChar=`substring $InitString $RevCharCount $RevCharCount`;
print ((int)$CurChar);
}
}