check typ zajęć z maszynopis

głosy
107

Jestem bardzo podekscytowany maszynopis , więc zacząłem się z nią bawić. Jako programista ActionScript to sprawia Javascript mniej trudne.

Jednak w języku ActionScript możliwe jest, aby sprawdzić typ w czasie wykonywania przy użyciu operatora IS :

var mySprite:Sprite = new Sprite(); 
trace(mySprite is Sprite); // true 
trace(mySprite is DisplayObject);// true 
trace(mySprite is IEventDispatcher); // true

Czy jest możliwe aby wykryć, czy zmienna (lub rozszerza) jest pewna klasa lub interfejs z maszynopis? Nie mogłem znaleźć nic na ten temat w specyfikacji języka, powinno być tam podczas pracy z klas / interfejsów.


Aktualizacja: Kilka lat później. Rzuciłem maszynopis bardzo szybko i zacząć używać haXe który kompiluje się doskonałą JavaScript i ma realne typu sprawdziany, które działa na klasach, interfejsy itd. Posiada również usuwanie martwego kodu, lepsze teksty stałe, abstrakcyjne typy i skompilować funkcji czasowych (makr), zestawia również do jednego pliku, dzięki czemu nie jest potrzebny skomplikowany system pakiet build.

Utwórz 08/10/2012 o 21:47
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
142

4.19.4 Operator instancją

instanceofOperatora wymaga lewy argument być dowolnego typu, typ obiektu lub typu parametru typu, a prawy argument być dowolnego typu lub podtypu „funkcja” typu interfejsu. Wynik jest zawsze Boolean prymitywnego typu.

Więc można używać

mySprite instanceof Sprite;

Zauważ, że ten operator jest również w języku ActionScript, ale nie powinny być stosowane już tam:

Operator jest, co jest nowym elementem języka ActionScript 3.0, pozwala na sprawdzenie, czy zmienna lub wyrażenie jest członkiem danego typu danych. W poprzednich wersjach języka ActionScript, operator instanceof warunkiem tę funkcjonalność, ale w języku ActionScript 3.0 operator instanceof nie powinny być wykorzystywane do testowania przynależności do typu danych. Operator is powinien być stosowany zamiast operatora instanceof do ręcznego sprawdzania typu, ponieważ wyrażenie x instanceof y jedynie sprawdza łańcuch prototypu X dla istnienia y (w języku ActionScript 3.0, łańcuch prototypów nie daje pełnego obrazu hierarchia dziedziczenia).

Maszynopis w instanceofakcje te same problemy. Ponieważ jest to język, który jest nadal w jego rozwoju Polecam podać propozycję takiego zakładu.

Zobacz też:

Odpowiedział 08/10/2012 o 21:54
źródło użytkownik

głosy
8

Maszynopis mają sposób sprawdzania typ zmiennej w czasie pracy. Możesz dodać Walidujący funkcję zwracającą typ predykatu . Tak można nazwać tę funkcję wewnątrz instrukcji if, i mieć pewność, że cały kod wewnątrz tego bloku jest bezpieczny w użyciu jako typ uważasz, że jest.

Przykład z Dokumenty Typescript:

function isFish(pet: Fish | Bird): pet is Fish {
   return (<Fish>pet).swim !== undefined;
}

// Both calls to 'swim' and 'fly' are now okay.
if (isFish(pet)) {
  pet.swim();
}
else {
  pet.fly();
}

Zobacz więcej na: https://www.typescriptlang.org/docs/handbook/advanced-types.html

Odpowiedział 21/11/2016 o 10:42
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more