【问题标题】:Can a delegate of a closure be a closure?闭包的代表可以是闭包吗?
【发布时间】:2019-11-29 21:42:25
【问题描述】:

我正在尝试在另一个闭包中读取/更新一个闭包的一些变量。

我在闭包a 中定义了两个变量并在闭包b 中读取/更新它,但Groovy 找不到变量:

Closure a = {
  String var1 = "var1"
  String var2 = "var2"
}

Closure b = {
  var2 = "new var2"
  println(var1)
  println(var2)
}

b.delegate = a
b()

闭包b 如何访问这两个变量?谢谢!

【问题讨论】:

  • 我不认为你可以。您无法从外部获取变量,例如 a.var1 也不起作用

标签: groovy closures


【解决方案1】:

您可以像类对象一样从 ma​​p 委托一个闭包,而不是尝试委托给另一个闭包。 如果你已经知道,请忽略

如下代码所示:

Map binding = [a: "Legion Commander", b : "wind ranger"]
Closure test = { a = "Invoker"; println "My favs : $a , $b"}
test.delegate = binding
test()

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多