Maya MEL: преобразование строки в целое число сохраняет значение, пока в цикле не появится другой номер строки - PullRequest
0 голосов
/ 26 апреля 2020

Вы, вероятно, знаете, что в 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);
    }
}
...