Groovy半独有范围的奇怪行为

edi_allen

这是《 Groovy in Action》一书中的代码示例为什么在使用半排除范围时Groovy会显示此行为。它应该返回范围中最后一个元素以外的所有元素,但有时会显示范围中所有元素加一个。

这是示例。

 class Weekday implements Comparable {
    static final DAYS = [
        'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
    ]
    private int idx = 0

    Weekday(index)     { idx = index }
    Weekday next()     { new Weekday(idx+1) }
    Weekday previous() { new Weekday(idx+1) }
    int compareTo(Object other) { this.idx <=> other.idx }

    String toString() {
        def index = idx % DAYS.size()
        while (index < 0 ) index += DAYS.size()
            DAYS[index]
    }
}

def mon = new Weekday(1)
def fri = new Weekday(5)

7.times { mon++ } // Monday following week

println fri.idx   //  5
println mon.idx   //  8

println 5 .. 8    // [5, 6, 7, 8]
println fri..mon  // [Fri, Sat, Sun, Mon] Ok without half-exclusive
println 5 ..< 8   // [5, 6, 7]
println fri..<mon // [Fri, Sat, Sun, Mon, Tue] ????????
玛哈帕特罗

previous()应该idx - 1代替idx + 1

Weekday previous() { new Weekday(idx-1) }

可能是复制粘贴错字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Groovyc * .groovy奇怪的行为

来自分类Dev

Groovy + JsonSlurper奇怪的行为

来自分类Dev

Groovy + JsonSlurper奇怪的行为

来自分类Dev

奇怪的范围行为

来自分类Dev

父资源独有的friendly_id范围

来自分类Dev

SwiftUI-导航视图打开,带有“后退”按钮和半灰屏/奇怪的行为

来自分类Dev

基于Groovy的DSL中绑定的奇怪行为

来自分类Dev

Groovy私有字段中的错误会导致奇怪的行为吗?

来自分类Dev

Golang范围表达式的奇怪行为

来自分类Dev

Elasticsearch中范围查询的奇怪行为

来自分类Dev

tr使用范围的奇怪行为

来自分类Dev

带有LayoutParams的奇怪行为

来自分类Dev

有范围但“半弱”类型的枚举

来自分类Dev

在Groovy的NodeChild上添加动态方法的奇怪行为

来自分类Dev

引用未知范围数组的不同编译器的奇怪行为

来自分类Dev

Date(),Date.UTC()与范围运算符的奇怪行为

来自分类Dev

解析超出范围值的枚举时的奇怪行为

来自分类Dev

从范围中选择随机整数时的奇怪行为

来自分类Dev

具有子图的MultipleLocator()的奇怪行为

来自分类Dev

PHP:具有变量分配的奇怪行为

来自分类Dev

带有NSubstitute的LINQPad中的奇怪行为

来自分类Dev

带有Python文件的奇怪IDE行为

来自分类Dev

Golang:具有函数类型的奇怪行为

来自分类Dev

QMessageBoxes在OSX中有非常奇怪的行为

来自分类Dev

带有MVC Razor语法的奇怪行为

来自分类Dev

具有双重比较的C ++奇怪行为

来自分类Dev

Java替换/替换所有奇怪的行为

来自分类Dev

带有字典的Swift奇怪的'=='行为

来自分类Dev

Protobuf带有枚举的奇怪行为