【问题标题】:How to do this in Groovy Range Object?如何在 Groovy 范围对象中执行此操作?
【发布时间】:2011-07-16 06:02:04
【问题描述】:

我想要从 0.1 到 2 的数字(例如 0.1,0.2,0.3,0.4 等到 2.0),因为我是一个很时髦的人,所以我决定 Range 来完成这项工作,并附带如下代码:

def a = 0.1..2
println a

但它只打印[0.1, 1.1] 作为它的输出!所以我不能在Range 中做到这一点?还是按语法错误?

提前致谢。

【问题讨论】:

标签: groovy


【解决方案1】:

这不是微不足道的。 range 对象有一个 step 方法,但这只允许整数步。 另一种解决方案可能是定义您自己的范围对象。

如果列表也可以,可以对数字使用step方法:

0.1.step(2, 0.1){ print "$it "} 

另一种解决方案:

(1 .. 20).collect{it/10}

【讨论】:

  • 哦,但是在 Groovy in Action 中(第一版说它是可能的!)......鲍里斯发布的答案不会奏效!
  • 找到了。似乎发生了变化。在第一版中,您会发现一个示例assert (0.0..1.0).contains(0.5),在本书第二版中已更改为assert (0.0..1.0).contains(0.5) == false
  • step 方法在第一种情况下如何工作?其实step方法是用来干嘛的?
  • 您可以购买 Groovy in action 第二版 MEAP(Manning Early Access Program):manning.com/koenig2。 MEAP 的价格非常优惠,如果您订阅了每日特卖邮件列表,甚至有机会获得更好的价格:manning.com/free/dotd.html
猜你喜欢
  • 2010-10-30
  • 2010-10-03
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
相关资源
最近更新 更多