2013-03-15 15 views
6

Czy ktoś wie, w jakim języku programowania można użyć to:kiedy (wyrażenie) {robić rzeczy}

when(expression){ do stuff } 

Przypuszcza się zarejestrować ekspresję i blok kodu w jakiejś tablicy, która z kolei jest analizowany każdy Q mili-/micro-/nanosekundy przez wątek tła i dla każdego wyrażenia, które zwraca wartość true, wykonuje odpowiedni blok kodu.

Jak mogłoby się wydawać, mam już wdrożenie. Pytam, ponieważ myślę, że byłoby miło, gdyby był obsługiwany natywnie w niektórych językach programowania.

Dla kogo można zapytać, jaki jest pożytek z takiej instrukcji - wyobraź sobie, że tworzysz jakieś zmienne/obiekty w swoim programie i chcesz, aby procedura była wykonywana za każdym razem/kiedy/kiedykolwiek zmienna/obiekt ma określoną wartość/stan. Zaletą jest to, że nie musiałbyś łączyć kodu ze zmienną/obiektem, a nawet więcej nie musiałby istnieć w momencie deklarowania when(){}. Byłby to rodzaj wyzwalacza

+0

Brzmi interesująco, ale nie jest to coś, o czym słyszałem, że został zaimplementowany natywnie w języku. Najbliższa rzecz to prawdopodobnie wydarzenie? Ale nawet to zależy od aplikacji, a nie od implementacji językowej. Opierałoby się także na pierwotnym autorze, a nie na pisarzu kodu końcowego. –

+0

Wygląda jak odbiornik Broadcast w systemie Android (ale z innym cukrem syntaktycznym). –

+0

Byłoby to sprzeczne z zasadą hermetyzacji, gdyby zostały one wdrożone w skali globalnej, co, jak sądzę, sugeruję. – Jodes

Odpowiedz

0

Język SR ma konstrukcję bardzo podobną do tej, której szukasz. Nie składnia jest

do guard -> command 
[] guard -> command 
[] guard -> command 
... 
od 

Można znaleźć informacje (i wdrażania) tutaj: http://www.cs.arizona.edu/sr/

0

Nie znam żadnej konstruktów poziom języka, jak to, co można opisać, ale to brzmi podobnie w zasadzie co ReactiveX robi ze swoimi obserwowalnymi. Uważam, że typ Observable ma zostać włączony również do przyszłych wersji Javascript.

To wygląda trochę inaczej:

observable.doNext(() => { // do stuff }) 

vs:

when(expression) { // do stuff } 

W przykładzie dajesz wyraz wróci coś zbliżona do ReactiveX obserwowalne, a ciało z rachunku mogą być zrównane z .doNext(() => do stuff). W rzeczywistości Rx oferuje wiele opcji radzenia sobie z różnymi obserwowalnymi zdarzeniami i może zrobić naprawdę potężne rzeczy pozwalające na łańcuchowe operacje.