Skocz do zawartości

Featured Replies

Napisano

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 przez ant-3d

  • Odpowiedzi 3
  • Wyświetleń 1,6k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

"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

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 przez ant-3d

Napisano
-- 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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności