Gość ant-3d Napisano 29 Styczeń 2011 Napisano 29 Styczeń 2011 (edytowane) 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ń 2011 przez ant-3d
Polacco Napisano 30 Styczeń 2011 Napisano 30 Styczeń 2011 "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.
Gość ant-3d Napisano 30 Styczeń 2011 Napisano 30 Styczeń 2011 (edytowane) 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ń 2011 przez ant-3d
CgBartosz Napisano 31 Styczeń 2011 Napisano 31 Styczeń 2011 -- 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 )
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się