2013-03-15 24 views
6

Không ai biết trong đó ngôn ngữ lập trình bạn có thể sử dụng này:khi (biểu thức) {do stuff}

when(expression){ do stuff } 

Đây là vụ phải đăng ký biểu và khối mã trong một số mảng mà lần lượt được phân tách mỗi Q mili-/micro-/nano giây theo chuỗi nền và, đối với mọi biểu thức đánh giá là đúng, thực thi khối mã tương ứng.

Như bạn có thể nghĩ, tôi đã có triển khai. Tôi hỏi vì tôi nghĩ sẽ tốt hơn nếu được hỗ trợ bằng một số ngôn ngữ lập trình.

Đối với ai có thể hỏi việc sử dụng cho lệnh như thế nào - hãy tưởng tượng bạn tạo một số biến/đối tượng trong chương trình của bạn muốn thực hiện thủ tục mỗi lần/trong khi/bất cứ khi nào biến/đối tượng có giá trị nhất định/tiểu bang. Ưu điểm là bạn sẽ không phải liên kết mã với biến/đối tượng và chúng thậm chí không cần phải tồn tại tại thời điểm bạn khai báo when(){}. Nó sẽ là một loại kích hoạt

+0

Nghe có vẻ thú vị, nhưng không phải cái gì tôi nghe nói về thực hiện nguyên bản trong một ngôn ngữ. Điều gần nhất có lẽ sẽ là một sự kiện? Nhưng ngay cả đó là phụ thuộc vào ứng dụng, không quá nhiều việc thực hiện ngôn ngữ. Nó cũng sẽ dựa vào tác giả ban đầu, chứ không phải là người viết mã kết thúc. –

+0

Nó trông giống như một Broadcast Receiver trong Android (nhưng với đường cú pháp khác nhau). –

+0

Nó sẽ đi ngược lại nguyên tắc đóng gói nếu chúng được thực hiện trên quy mô toàn cầu mà tôi nghĩ bạn đang ngụ ý. – Jodes

Trả lời

0

Ngôn ngữ SR có cấu trúc rất giống với cấu trúc bạn tìm kiếm. Có cú pháp là

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

Bạn có thể tìm kiếm thông tin (và thực hiện) ở đây: http://www.cs.arizona.edu/sr/

0

Tôi không biết về bất kỳ cấu trúc trình độ ngôn ngữ giống như những gì bạn mô tả, nhưng nó có vẻ tương tự về nguyên tắc với những gì ReactiveX với các quan sát của nó. Tôi tin rằng loại Quan sát được sẽ được tích hợp vào các phiên bản tương lai của Javascript.

Nó trông hơi khác một chút:

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

vs:

when(expression) { // do stuff } 

Trong ví dụ bạn đưa ra biểu hiện của bạn sẽ trở về một cái gì đó giống như một ReactiveX thể quan sát được, và cơ thể của báo cáo kết quả có thể là tương đương với .doNext(() => do stuff). Trong thực tế, Rx cung cấp một số tùy chọn cho cách xử lý các sự kiện quan sát khác nhau và nó có thể làm một số công cụ thực sự mạnh mẽ cho phép bạn hoạt động chuỗi.

Các vấn đề liên quan