Groovy学习笔记

Groovy学习笔记,第1张

概述Scala适用于需要高性能的多线程环境,Groovy适用于DSL、测试、快速开发等 在脚本中解析脚本 evaluate(expression) Eval.me(expression) Eval.x(param1,expression) Eval.xy(param1,param2,expression) Eval.xyz(param1,param2,param3,expression) 有一个问题就

Scala适用于需要高性能的多线程环境,Groovy适用于DSL、测试、快速开发等

在脚本中解析脚本
evaluate(Expression)
Eval.me(Expression)
Eval.x(param1,Expression)
Eval.xy(param1,param2,Expression)
Eval.xyz(param1,param3,Expression)
有一个问题就是用Eval解析的表达式作用域的问题,如果要使用当前域下的函数,需要结合闭包和委托指向来实现

def c=evaluate("{->${Expression}}")c.delegate=thisc()

一个具体的Demo:

def power(x){x*x}println power(2)//evaluate("println power(2)") // 这样写会出错的def Expression = "println power(2)"def closure1 = evaluate("return {->${Expression}}")closure1.delegate=thisclosure1()def test(String ex){  def closure = evaluate("return {->${ex}}")  closure.delegate = this  closure()}test(Expression)

java执行groovy脚本为了防止前面的表达式污染,可以在下一条表达式执行前对bindings进行清理

ScriptEngine engine = new ScriptEngineManager().getEngineByname("groovy");final Bindings bds=engine.getBindings(ScriptContext.ENGINE_ScopE);bds.clear(); //在执行前将bings进行清理,可以防止前面的表达式污染engine.eval(scripts);

实用代码

('a'..'z') // [a,b,..z]0.upto(10){print it}10.times{print it}0.step(11,2){print it}s=""" 我是带格式的文本 两行 """
总结

以上是内存溢出为你收集整理的Groovy学习笔记全部内容,希望文章能够帮你解决Groovy学习笔记所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存