gpt4 book ai didi

java - JEXL 在哪里存储本地变量以及通过什么机制分配本地变量?

转载 作者:行者123 更新时间:2023-12-01 21:48:36 26 4
gpt4 key购买 nike

Apache JEXL 脚本引擎调用上下文的 setter 方法来完成脚本中所做的分配。我提供的上下文将接管来存储作业。

a = mylib.hello();

声明局部变量时,上下文相当于什么?

var b = mylib.goodbye();

在我的应用程序设计中,我需要拦截每个赋值,并且每个变量都可定位。

局部变量的分配机制是什么?它们存储在哪里?我如何能够重载/覆盖/拦截该机制?

最佳答案

为了处理局部变量和脚本参数,JEXL 在解析时创建充当可链接符号表的作用域 (Scope)。对于每个变量/参数,都会在解析范围中创建一个符号。每个脚本和 lambda/函数都有一个作用域。在执行期间,每个作用域都会创建一个框架来保存符号的值。要拦截分配局部变量,您必须派生(内部)Frame 类并重写“set”方法;只有几个构造函数调用,所以这不是一个巨大的变化。请注意,此信息基于 3.2 主干,您可能最终会得到一个本地分支(包 protected 类等)。如果可以的话,了解为什么需要捕捉会很有趣。干杯

关于java - JEXL 在哪里存储本地变量以及通过什么机制分配本地变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58771737/

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