Napisano 29 Styczeń 201114 l Hej Znow mam problem :) Potrzebuje sie dowiedziec w maxscripcie czy dana zmienna jest liczba. W teorii wiem ze "chyba" powinienem sobie taka zmienna zamienic na kod ascii i zobaczyc czy to co dostane spelnia warunek ((zmienna > 0) and (zmienna Podsumowujac to jak sprawdzic czy dana zmienna to liczba? Edytowane 30 Styczeń 201114 l przez ant-3d
Napisano 30 Styczeń 201114 l "warunek ((zmienna > 0) and (zmienna Maxscript ma hierarchię typów - typy liczbowe mają bazową klasę Number. Poza tym maxscript ma refleksje i można sprawdzić czy zmienna jest liczbą: x = 666 IsKindOf x Number "IsKindOf x Number" zwróci true zarówno gdy x będzie Integer jak i Float, ponieważ dziedziczą one z Number. Tak w ogóle to poza światem Maxscript (ten język jest dla mnie "marginesem") ludzie zawracają sobie głowę tym żeby nie korzystać z refleksji i instrukcji warunkowych.
Napisano 30 Styczeń 201114 l Dzieki wielkie, o to chodzilo :) Tyle razy juz kopalem po helpie i nie znalazlem tego isKindOf. EDIT: no dobra rowiazalo mi to problem polowicznie. Powiedzmy teraz ze mam taka zmienna: x = "3" jesli zapytam sie teraz isKindOf x Number to oczywiscie dostane false. To sie zgadze bo to jest string. Gdyby x = 3 to wowczas bylby integer. Pytanie: Majac zmienna x = "3" jako string jak moge sprawdzic czy moge ja sobie zkastowac na integera?? EDIT2: No dobra rozwiazalem sobie problem. Moze komus sie tez przyda: check_it = "3" if (((bit.charAsInt check_it) > 47) and ((bit.charAsInt check_it) ( x = check_it as integer -- mamy integera bo zostal spelniony powyzszy warunek -- czyli "3" zamienilem na kod ascii a w kodzie ascii cyfry sa od 48 do 57 ) Edytowane 31 Styczeń 201114 l przez ant-3d
Napisano 31 Styczeń 201114 l -- zwraca undefined jesli nie mozna skonwertowac argumentu na number -- zwraca wynik konwersji jesli uda sie skonwertowac argument na number fn ToNumber _value = ( foundValue = undefined if (iskindof _value Number) == true do foundValue = _value if foundValue == undefined do ( try( tmpval = execute _value if (iskindof tmpval Number) == true do foundValue = tmpval )catch(format "Error Converting To Number. value:% exception:%\n" tmpval (getcurrentexception())) ) return foundValue )
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto