簡體   English   中英

JEXL 在哪里存儲本地變量以及通過什么機制分配本地變量?

[英]Where does JEXL store local vars and by what mechanism are local vars assigned?

Apache JEXL 腳本引擎調用上下文的 setter 方法來完成腳本中的分配。 我提供的上下文將接管存儲分配。

a = mylib.hello();

聲明局部變量時,上下文的等價物是什么?

var b = mylib.goodbye();

在我的應用程序設計中,我需要攔截每個分配,並且每個變量都可以定位。

本地變量的分配機制是什么,它們存儲在哪里? 我如何能夠重載/覆蓋/攔截該機制?

為了處理局部變量和腳本 arguments,JEXL 在解析時創建作用域(Scope)作為可鏈接符號表。 對於每個變量/參數,在解析 scope 時會創建一個符號。 每個腳本和 lambda/函數有一個 scope。 在執行期間,根據 scope,將創建一個保存符號值的幀。 要攔截分配局部變量,您必須派生(內部)框架 class 並覆蓋“設置”方法; 只有幾個構造函數調用,所以它不是一個巨大的變化。 請注意,此信息基於 3.2 主干,您可能最終會得到一個本地分支(包保護類等)。 如果可以的話,了解為什么需要捕獲會很有趣。 干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM