Groovy "приводит" строку к целому числу, основываясь на его хэш-коде / коде ASCII? - PullRequest
1 голос
/ 23 мая 2011

Сегодня я начал кодировать с groovy и заметил, что если я возьму следующий код:

int aaa = "6"
log.info(aaa)

Вывод, который я получаю:

54 <-- (ASCII Code for '6')

Если я назначу aaa с любым числом, выходящим за пределы диапазона 0..9, я получу исключение приведения класса.
Похоже, если строка на самом деле одиночная character - groovy преобразует свой ASCII код / ​​hashCode.

Я попробовал этот код:

int aaa = "A"
log.info(aaa)

И результат, который я получил, был:

65 <-- (ASCII code for 'A')

Какова официальная причина этого? Это потому, что groovy автоматически меняет "A" на 'A'?

1 Ответ

2 голосов
/ 23 мая 2011

Как говорит здесь Йохен в JIRA ;При необходимости строки длины 1 преобразуются в символы (и, помещая их в переменную int, предполагают, что это именно то, что вы хотите сделать)

Если вы хотите принимать большие числа, вы можете сделать следующее:

int a = '12345' as int

И это преобразует целое число в целое число.

...