我將解釋什麼,我通過限制範圍首先意味着:是否有可能在Scala中創建一個「受限範圍」?
restrictedScope (allowedNamespace) {
/* THE CLIENT CODE GOES HERE */
/* the namespace in this closure is limited only to the idioms
I allow, both in terms of reserved words and standard functions */
val result = allowedNamespace.run(); // works, since run() ...
// ... is a function of allowedNamespace
val list = new List(); // does not work, since List is not in scope
/* CLIENT CODE SAMPLE (prepare, release and wait are defined in allowedNamespace) */
prepare("service 1")
wait(1000)
release("service 1")
...
}
在執行基於常規的Scala代碼嚴格勢在必行DSL,我想安全地運行客戶端代碼。爲了安全起見,我可能想要限制這樣的構造的使用,如和,如果(只有可能的話),刪除列表的創建,並且只允許我在允許的命名空間中定義的習語被執行/引用。
是否有設施可以做到這一點,而不會覆蓋所有標準成語?
如果沒有,是否有自動方式(可能通過反射)來覆蓋導入到命名空間的所有標準成語?
我想這就是他們所說的一流的上下文,但我不確定。 – missingfaktor 2012-04-28 13:48:28