概述
Groovy
是一个可以解释执行的语言,在解释执行的情况下具有以下基础语法特征。
groovy xxx.groovy
方式运行一个groovy
文件.
在解释执行的Groovy
文件中,有如下特点:
- 文件运行在一个
Script
对象中。 def
关键字可以省略
举个例子:
//省略def不写
name = "XiaoMing123"
//闭包不写def
myClosure = {
age = 3
println(age)
}
println(name)
myClosure.call()
//运行在Script类中
println(this instanceof Script) //返回true
输出:
XiaoMing123
3
true
evaluate函数
evaluate
函数可以调用另一个脚本文件,并把Script
的binding
对象传过去。
函数声明:
evaluate(File file)
file
为脚本位置
举个例子:
我们有两个脚本文件ScriptOne
,ScriptTwo
//ScriptOne.groovy
println("我是第一个ScriptOne")
result=evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/ScriptTwo.groovy"))
println(result)
//ScriptTwo.groovy
println("我是第二个ScriptTwo")
"第二个脚本的返回结果 ლ(′◉❥◉`ლ)"
输出:
我是第一个ScriptOne
我是第二个ScriptTwo
第二个脚本的返回结果 ლ(′◉❥◉`ლ)
Script
中有一个属性binding
,而binding
内部有一个variables
存储当前环境的变量,如当前声明的变量或者启动脚本传入的参数。当执行一个脚本时如果存在variables
保存的变量那么可以直接使用。evaluate
调用时会把当前脚本的binding
传入下一个脚本中。
接下来看一个复杂的例子:
三个文件:
- Main.groovy
- MyScript.groovy
- MyScript2.groovy
//Main.groovy
//省略def不写
name = "XiaoMing123"
//闭包不写def
myClosure = {
age = 3
println(age)
}
//调用MyScript 并自动把自身的binding传入下一个.
evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript.groovy"))
//MyScript.groovy
//println(binding.variables.name)
age = 3
//输出Main.groovy中声明的name变量
println("MyScript:name=" + name)
println("MyScript:args[0]=" +args[0])
//调用MyScript2,把自身的binding和上级父亲Main的bingding一起传入给下一级
evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript2.groovy"))
MyScript2.groovy
//MyScript2.groovy
println("MyScript2:name=" + name)
println("MyScript2:age=" + age)
调用groovy Main.groovy aa
传入了一个aa
参数
输出:
MyScript:name=XiaoMing123
MyScript:args[0]=aa
MyScript2:name=XiaoMing123
MyScript2:age=3
编译时环境运行脚本
如果你想在编译版本groovy
运行脚本请用如下方式:
class Main {
public static void main(String[] args) {
def binding = new Binding()
binding.setVariable("args", ["hello"])
binding.setProperty('name',"XiaoMing")
def shell = new GroovyShell(binding)
shell.evaluate(new File("/Users/fmy/IdeaProjects/groovy2/src/main/groovy/MyScript.groovy"))
}
}
最后
以上就是善良海燕为你收集整理的Groovy脚本执行的全部内容,希望文章能够帮你解决Groovy脚本执行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复