WEB开发网
开发学院软件开发Java 实战 Groovy: Groovy 的腾飞 阅读

实战 Groovy: Groovy 的腾飞

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 清单 7. 过滤改编!packagecom.vanward.groovyclassFilter{@Propertystrategybooleanapply(str){returnstrategy.call(str)}}simplefilter={str->if(str.indexOf(&q


清单 7. 过滤改编!
package com.vanward.groovy 
class Filter{ 
 @Property strategy 
 boolean apply(str){ 
 return strategy.call(str) 
 } 
} 
simplefilter = { str -> 
 if(str.indexOf("java.") >= 0){ 
  return true 
 }else{ 
  return false 
 } 
} 
  
fltr = new Filter(strategy:simplefilter) 
assert !fltr.apply("test") 
assert fltr.apply("java.lang.String") 
  
rfilter = { istr -> 
 if(istr =~ "com.vanward.*"){ 
  return true 
 }else{ 
  return false 
 } 
} 
  
rfltr = new Filter(strategy:rfilter) 
assert !rfltr.apply("java.lang.String") 
assert rfltr.apply("com.vanward.sedona.package") 

目前为止还不坏,您觉得呢?新的 Groovy 语法很容易掌握!

对范围(range)的更改

Groovy 的范围语法的变化非常小。在经典的 Groovy 中,您可以通过使用 ... 语法指明排他性(即上界)来避开这些变化。在 JSR Groovy 中,只要去掉最后一个点(.),并用直观的 < 标识替代它即可。

请注意观察我在下面的清单 8 中对来自“Feeling Groovy”一文中的范围示例进行的改编:


清单 8. 新的范围语法
myRange = 29..<32 
myInclusiveRange = 2..5 
println myRange.size() // still prints 3 
println myRange[0]  // still prints 29 
println myRange.contains(32) // still prints false 
println myInclusiveRange.contains(5) // still prints true 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:实战 Groovy Groovy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接