日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )

發布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、綁定作用域 binding 變量分析
  • 二、Binding 類 variables 成員分析
  • 三、完整代碼示例
    • 1、調用者 Groovy 腳本
    • 2、被調用者 Groovy 腳本
    • 3、執行結果





一、綁定作用域 binding 變量分析



分析 groovy.lang.Script 類的 evaluate 方法源碼 , 在該方法中 , 創建了一個 GroovyShell 對象 ;

在創建時 , 將本腳本的 Binding binding 成員傳遞給了該 GroovyShell 對象 ;

Binding binding 成員中 , 保存了所有的 綁定作用域 變量 ;

GroovyShell 執行 File file 腳本 時 , 就可以拿到傳入的 Binding binding 成員中的所有 綁定作用域變量 , 包括我們定義的

// 要傳入的參數 args = [] args[0] = "arg0" args[1] = "arg1"

args 參數變量 , 這樣就在被執行的 Groovy 腳本中 , 獲取到了相應的執行參數 ;


groovy.lang.Script # evaluate 方法源碼 :

public abstract class Script extends GroovyObjectSupport {/*** 一個助手方法,允許使用此腳本綁定作為變量范圍動態計算groovy表達式** @param file 要執行的 Groovy 腳本文件 */public Object evaluate(File file) throws CompilationFailedException, IOException {GroovyShell shell = new GroovyShell(getClass().getClassLoader(), binding);return shell.evaluate(file);} }



二、Binding 類 variables 成員分析



Binding 類原型如下 , 所有的 綁定作用域 變量 , 都封裝在 private Map variables 成員中 ;

/*** 表示腳本的變量綁定,可以從腳本對象外部進行更改,也可以在腳本外部創建并傳遞到腳本中。* <p> 綁定實例不應在多線程上下文中使用。*/ public class Binding extends GroovyObjectSupport {private Map variables; }

在被調用的 Groovy 腳本中 , 打印 Binding binding 中的 Map variables 成員 ;

// 打印參數 println argsdef age = "18" age2 = "16"// 打印綁定作用域變量 println binding.variables

打印結果如下 :

[arg0, arg1] [args:[arg0, arg1], age2:16]

age2 變量 和 args 變量 , 被放在了 綁定作用域中 , 使用 def 定義的變量 , 是本地作用域變量 , 沒有被放在 Binding binding 成員中 ;


Map variables 對應的內容如下 :

[args:[arg0, arg1], age2:16]
  • args 變量對應的值是 [arg0, arg1] , 這是傳入的腳本執行參數 ;
  • age2 變量對應的值是 16 , 這是使用 age2 = "16" 代碼 , 在本腳本中定義的 綁定作用域變量 ;




三、完整代碼示例




1、調用者 Groovy 腳本


// 要傳入的參數 args = [] args[0] = "arg0" args[1] = "arg1"// 調用 Script.groovy 腳本 evaluate(new File("Script.groovy"))

2、被調用者 Groovy 腳本


/*下面的 age 和 age2 都是變量定義age 變量的作用域是 本地作用域age2 變量的作用域是 綁定作用域一個是私有變量 , 一個是共有變量*/// 打印參數 println argsdef age = "18" age2 = "16"// 打印綁定作用域變量 println binding.variablesprintln "$age , $age2"/*定義一個函數在下面的函數中 , 可以使用 綁定作用域變量不能使用 本地作用域變量*/ void printAge() {println "$age2"//println "$age" }printAge()

3、執行結果


上面的兩個 Groovy 腳本都在相同目錄 ;

[arg0, arg1] [args:[arg0, arg1], age2:16] 18 , 16 16

總結

以上是生活随笔為你收集整理的【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。