2013-03-15 85 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为如何处理不同的可观察事件提供了许多选项,并且它可以做一些非常强大的功能,允许您链接操作。