Я реализую несколько математических классов и впервые нахожу проблемы с Java (громоздкий и дублированный код), которые я действительно не могу преодолеть с помощью умного кодирования.Перегрузка операторов была бы ДЕЙСТВИТЕЛЬНО удобной, и есть несколько других вещей, которые Groovy может сделать намного лучше (я могу также попробовать Scala в какой-то момент).
Так что я все еще пишу основные классы (Прямо сейчасComplex и Matrix) в Java, но я собираюсь использовать их из Groovy.
Я изменил имена некоторых методов (.add), чтобы воспользоваться перегрузкой операторов (.plus).
Теперь мои классы очень хорошо взаимодействуют с базовым классом "Число", поэтому я могу использовать:
complex.add(number); //or
complex = complex + number;
и получить удивительный ответ, но я не могу использовать:
complex = number + complex
так как число не понимает .add (Число), и даже если бы оно это понимало, оно не знало бы, как обращаться с Числом, если оно оказалось сложным.
Могу ли я написать число.plus(сложный) и добавить его в номер интерфейса?Код на самом деле был бы довольно простым, я мог бы просто перевернуть его:
Number plus(complex) {
return complex.plus(this);
}
Это сработало бы для всего с номером типа, но я не знаю, сможет ли Groovy перенести это на числовой интерфейс после факта,(Кроме того, Number и Complex написаны на Java, поэтому я рассматриваю это как надстройку для groovy).
Любой другой совет?Должен ли я просто сдаться и выучить Scala?
О, я понимаю, что, возможно, существуют пакеты, которые уже могут это делать, но часть из них - это просто изучение математики, я работаю через квантовые вычисления.текст, и я выполняю упражнения на ходу.