Groovy 代表按预期工作吗?

2023-12-28

我有一个简短的片段,我尝试将变量解析委托给委托人。但是,不使用委托值,而是使用所有者值。这是故意的还是错误?

class Person {
    int age
}

def age = -5
def closure = { -> age }
closure.delegate = new Person(age: 99)
closure.resolveStrategy == Closure.DELEGATE_ONLY

assert closure.call() == 99

上面的代码失败,闭包返回 -5。


您的代码返回-5因为变量age是在闭包的词法范围内定义的,这意味着闭包可以使用变量的值age.

您必须明确告诉闭包使用委托的age属性:

def closure = { -> delegate.age }

尝试以下代码:

class Person {
    int age
}  
def age = -5 
def closure = { -> delegate.age * age } 
closure.delegate = new Person(age: 99)
closure.resolveStrategy == Closure.DELEGATE_ONLY 
assert closure.call() == 99*-5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Groovy 代表按预期工作吗? 的相关文章

随机推荐

  • NetBeans 远程连接

    我正在尝试设置 netBeans 远程项目 但遇到了很多麻烦 我已经从远程服务器启动了一个 PHP 应用程序 在最后一个确认步骤中它向我抛出了错误 没有可供下载的文件 尝试在远程配置中检查被动模式 在日志输出中 它失败了 gt 215 UN
  • Facelets ui:remove 标签的实际意义

    我想了解基本机制
  • Maven 原型不使用属性来创建模块名称

    我创建了一个原型 您可以在其中设置 moduleName 或期望 使用 必需的属性 moduleName 这里是原型元数据 xml 减少 我也尝试过类似的结果
  • 数据库中的闰秒处理

    As The Unix time number is zero at the Unix epoch and increases by exactly 86400 per day since the epoch So it cannot re
  • DTD 是否已被弃用?

    In XML 模式和 DTD 有什么区别 https stackoverflow com questions 1544200 what is difference between xml schema and dtd 两个回答者表示 DTD
  • Angular Js HTML5 模式不起作用 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试将 HTML5 模式添加到我的 Angular 应用程序中以删除 符号 问题是它根本行不通 我的整个 ng view 将
  • Maven:在战争构建的资源文件夹中包含文件夹

    我在 src main resource 中有一个名为 extra jars 的文件夹 但如何将它们包含在构建中 我希望它们与其余的 jar 一起放入 lib 文件夹中 我尝试将它们包括在内 但这没有用 对于不是由 Maven 存储库分发的
  • 消息:配置的数据库连接是持久的。正在中止

    Codeigniter 2 到 3 版本升级后 出现此错误 为什么会这样呢 遇到未捕获的异常 类型 异常 消息 配置的数据库连接是持久的 正在流产 文件名 var www vhosts xxx com app system librarie
  • R代码gmapsdistance

    我有以下代码用于查找两个位置之间的旅行时间 我使用 vba 调用脚本 这就是命令 args 显示在顶部的原因 但出于测试目的 我只是设置变量 这一直有效到今天 没有改变任何东西 现在一旦我运行结果行 我就不断收到此错误 Error in r
  • Numpy 在矩阵上按百分比分割

    我在理解以下编码时遇到问题 并且我是 python 新手 data a data b data C np split original data sample frac 1 random state 1729 int 0 7 len ori
  • 内部查询是否可以?

    我经常看到类似的东西 SELECT events id events begin on events name FROM events WHERE events user id IN SELECT contacts user id FROM
  • 不幸的是,应用程序在检查网络时停止了

    我正在使用以下代码来检查网络连接通过我的应用程序 public class ConnectionChangeReceiver extends BroadcastReceiver Override public void onReceive
  • 如何从 ggplot 对象中提取填充颜色?

    我正在尝试为一系列生成的函数编写一些自动化单元测试ggplot图形 例如 我想为绘图设置特定的色标 现在我需要一种方法来确定是否实际应用了正确的色阶 的背景 这是一些示例代码 用于设置fill使用 Color Brewer 调色板的颜色Da
  • 自定义 WordPress 颜色选择器

    有没有办法自定义 WordPress 3 8 颜色选择器 在自定义字段类型上 以仅使用我将定义的颜色 我只需要为客户提供 6 种颜色 但他们不想拥有除了 6 种渐变颜色之外的所有颜色 将不胜感激任何帮助 我已经尝试了好几天了 但没有积极的解
  • 调用clock()时出现分段错误

    我试图了解使用以下程序以编程方式缓存的效果 我的代码出现段错误 我使用GDB 编译为 g O0 并发现这是分段错误 start clock first occourance 难道我做错了什么 该代码对我来说看起来不错 有人可以指出错误吗 i
  • 该属性是接口类型('IFormFile')MVC Core

    我正在尝试制作一个可以保存文件 图像 的表单 但它显示了一个错误 InvalidOperationException 属性 Product Image 属于接口类型 IFormFile 如果它是导航属性 请通过将其转换为映射的实体类型来手动
  • 如何删除ios模拟器safari缓存

    我正在尝试在 iPhone 模拟器上测试一个网站 我做了一些 JavaScript 更改 并且我的 JavaScript 文件正在从缓存中加载 我使用 safari Web 检查器 资源选项卡 在模拟器窗口上 看到旧版本文件 网络调用的状态
  • 如何以编程方式刷新 Eclipse 视图或 RSE 文件子系统?

    如何以编程方式更新 Eclipse 视图 我想这可能不需要特定于 RSE 背景 我用的是远程系统资源管理器 RSE http www eclipse org tm 对于 Eclipse 通过 SSH 执行远程命令来执行一些操作 这会在远程主
  • JAX-RS 响应对象将对象字段显示为 NULL 值

    第一次实施JAX RS Client API在应用程序中 我在存储响应数据时遇到一些小问题 该数据返回为JSON作为 Java BEAN 请参阅下面的代码片段 其中演示了到目前为止我是如何实现它的 object client target
  • Groovy 代表按预期工作吗?

    我有一个简短的片段 我尝试将变量解析委托给委托人 但是 不使用委托值 而是使用所有者值 这是故意的还是错误 class Person int age def age 5 def closure gt age closure delegate