Что я сделал не так:Groovy цифровой строки сравнить
assert 'foo' == 'foo' //PASS
assert '500' == '500' //PASS
assert '500' < '1000' //FAIL <-- Supposed to pass
assert '500' <= '1000' //FAIL <-- Supposed to pass
assert '1000' > '500' //FAIL <-- Supposed to pass
assert '1000' >= '500' //FAIL <-- Supposed to pass
Это для настраиваемого "состояния" объекта:
class Condition {
static def compareClosure = [
'==' : { a, b -> a == b},
'!=' : { a, b -> a != b},
'<' : { a, b -> a < b},
'<=' : { a, b -> a <= b},
'>' : { a, b -> a > b},
'>=' : { a, b -> a >= b}
]
String comparator
def value
Condition(String comparator, String value) {
this.value = value
this.comparator = comparator
}
boolean isSatisfiedBy(def value) {
compareClosure[comparator](value, this.value)
}
}
Так
assert new Condition('<=', '1000').isSatisfiedBy('500') //FAIL
Есть ли способ сделать это без преобразования значения в числовой тип?
Является ли это использовать при заказе? –
http://stackoverflow.com/questions/1262239/natural-sort-order-string-comparison-in-java-is-one-built-in –
Я добавил дополнительную информацию. Это не для целей назначения – Thermech