gpt4 book ai didi

scala - 是否可以在 Scala 中创建 "restricted scope"?

转载 作者:行者123 更新时间:2023-12-04 05:48:42 25 4
gpt4 key购买 nike

我将首先解释我所说的受限范围是什么意思:

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 时,我想安全地运行客户端代码。为了安全地做到这一点,我可能想限制像 这样的结构的使用。为 如果 (仅在可能的情况下),删除列表的创建并仅允许执行/引用我在允许的命名空间中定义的习语。

是否有工具可以做到这一点,而不会覆盖所有标准习语?

如果没有,是否有一种自动方式(可能通过反射)来覆盖导入到命名空间的所有标准习语?

最佳答案

这可能与 Scala 2.10 中的实验性宏有关,它允许您检查 restrictedScope 中的代码。在编译之前。

但是,我认为您将很难过滤树中允许和禁止的方法。所以我不确定这是否可行。

或者,您可以使用实验性的 Scala 虚拟化分支,它至少可以让您简单地重载 forif自己喜欢的说法。 ( Reference )

然而,这也需要发布您自己的编译器,因此这实际上取决于您的问题范围和目标用户群。 ( Some more info on Scala DSLs. )

关于scala - 是否可以在 Scala 中创建 "restricted scope"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com