2013-03-15 81 views
6

有誰知道其中的編程語言,你可以使用這個:時(表達){做的東西}

when(expression){ do stuff } 

它應該登記的表達,在一些數組的代碼塊而這又是解析每Q mili-/micro-/nanoseconds by後臺線程,並且對於每個表達式求值爲true,執行它的相應代碼塊。

正如你可能認爲的,我已經有了一個實現。我在問,因爲我認爲在某些編程語言中本地支持它會很好。

對於誰可能會問這樣一個指令有什麼用處 - 假設您在程序中創建了一些變量/對象,希望每次/每當/變量/對象具有特定的值/州。好處是,你不必將代碼綁定到變量/對象,並且在聲明when(){}時他們甚至不必存在。 這將是某種觸發器

+0

聽起來有趣,但不是我聽說過的語言中本地實現的東西。最接近的事情可能是一個事件?但即使如此,依賴於應用程序,而不是語言實現。它也會依賴最初的作者,而不是最終的代碼編寫者。 – 2013-03-15 10:11:03

+0

它看起來像Android中的廣播接收器(但具有不同的語法糖)。 – 2013-03-15 10:17:28

+0

如果這些都是在全球範圍內實施的,我認爲你的意思是違背了封裝原則。 – Jodes 2013-03-15 10:30:51

回答

0

SR語言的結構非常類似於您所尋找的結構。 有語法

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

你可以找到的信息(而實現)在這裏:http://www.cs.arizona.edu/sr/

0

我不知道任何語言級別的結構像你描述的,但在原則上有什麼ReactiveX發音相似與它的觀察值一致。我相信Observable類型也將被納入未來版本的Javascript中。

它看起來有點不同:

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

VS:

when(expression) { // do stuff } 

在你給你的表情會返回一個類似於一個ReactiveX觀察到的例子,語句體可能是相當於.doNext(() => do stuff)。實際上,Rx爲如何處理不同的可觀察事件提供了許多選項,並且它可以做一些非常強大的功能,允許您鏈接操作。