在运行时从封闭范围访问变量

时间:2016-08-03 16:09:38

标签: scala

我正在努力实现一个DSL,除其他外,它允许我在上下文中包装一段代码。为简单起见,此示例中的上下文只是一个字符串。

上下文包装的代码块可以包含任何内容,但也包含对 func1 的调用。现在,在func1中,我希望能够访问封闭上下文的ID。

def func1() = {
    // Would like to access the context ID here
    // i.e. "MY_CONTEXT"
}

def func2()(implicit x: String) = {
    // Can access x here, but that would be "OTHER".
}


def context(id: String)(body: => Unit) = {
   // How can body make use of id ?
   body
}

implicit val c = "OTHER"
context("MY_CONTEXT") {
  func1()
  func2()
}

我已经研究过使用隐式参数。这可以用func2看到。但是,似乎需要在上下文调用之上声明这一点。这违背了目的,因为我只想用上下文调用来指定它。

我希望示例代码足以说明问题。关于如何保持上下文(id)(正文)构造如图所示的任何建议,并能够访问func1中的上下文ID?非常感谢您的帮助。

0 个答案:

没有答案