Вопрос

После того, как увидел эта ссылка, Я хочу попробовать Groovy ++, но у меня есть беспокойство;

Допустим ли весь синтаксис Groovy в Groovy ++?

Например, я могу сделать это в Groovy:

def list = [1,2]

Допустим ли приведенный выше код в Groovy ++?

Это было полезно?

Решение

Цель (я полагаю) состоит в том, чтобы заставить его поддержать как можно больше Groovy Code.

Я полагаю, что в настоящее время есть несколько областей, которые не работают, включая:

  1. Несколько заданий - не компилируется
  2. А Оператор спредоотданий может вызвать проблемы в некоторых ситуациях
  3. . с {} не работает

Но вы всегда можете обойти эти проблемы или не отмечать класс, который нуждается в них как @Typed

Другие советы

Есть список различий с образцами кода в http://groovy.dzone.com/articles/grovycomparetogrovy-part-1

Некоторые из различий:

  • более строгие проверки времени компиляции
  • Модификации типа без лета с ExpandometAclass
  • Закрытие не может изменить переменные вне кода закрытия
  • Нет прямых доступа к частным методам

Должно быть, так как в Groovy ++ вы можете:

  • Легкое смешивание статического и динамически напечатанного кода

Ссылка: http://code.google.com/p/grovypptest/wiki/welcome

а) Не волнуйтесь. Производительность не является проблемой, ни Groovy, ни Groovy ++. С обоими языками вы в основном пишете клей-логику. Код, который соединяет различные библиотеки Java. И эти библиотеки написаны на Java - поэтому они работают на полной скорости.

Иногда вы замечаете, что вы написали большую код в Groovy, и вы хотели бы добавить дополнительную скорость. Без проблем. Groovy отлично подходит для прототипа вашего алгоритма. Поскольку Groovy имеет синтаксис, похожий на Java, и использует все эти библиотеки Java, нет проблемы преобразовать ваш прототип в библиотеку Java, которая работает на полной скорости (да, вы должны кодировать его вручную, но это означает, что вы » Только «нужно удалить все эти коротки из вашего Groovy Code, чтобы превратить его в Java).

б) Насколько я понимаю Groovy ++, он работает через аннотации. Только если вы аннотируете код, он будет распознаваться как Groovy ++ -код. Так что это должно работать. Но, как вы можете видеть из всех этих ответов, не слишком много людей используют Groovy ++ на данный момент, поскольку производительность не проблема (см. :-).

Кстати: я думаю, что вилка Groovy ++ скоро будет объединена в стандартный Groovy Trunk ...

@Typed (typepolicy.mixed) делает живой разработчик, который хочет оптимизировать код, используя Groovy ++, безусловно, проще. Однако это не полностью поддерживает Groovy Code.

Есть еще проблемы, даже с совместимостью с кодом Groovy ++ с использованием @typed (typepolicy.mixed)

Например, отличное литье типа стиля (используя ключевое слово «как»)

 String foo = myUntypedFoo as String

нужно изменить на

 String foo = (String)myUntypedFoo

Также переменные, которые объявляются вне закрытия, не могут быть использованы непосредственно в этих закрытиях:

  @Typed(TypePolicy.MIXED)
  def countMatches( List<String> bahList, String pattern ){
    int counter = 0
    bahList.each{ String bah ->
      if (bah==pattern) counter++
    }
  }

Должен быть изменен в стиль Java (побеждает цель Groovy ++) или вы должны использовать эталонные объекты.

Groovy ++ очень полезен для улучшения производительности Groovy/Grails, но это, конечно, не простой способ, и я не уверен, если мне следует использовать Java.

Groovy ++ представил аннотацию @Typed(TypePolicy.СМЕШАННАЯ), которая полностью совместима с Groovy.

Используя @Typed(политика типов.ДИНАМИЧЕСКАЯ) или не используя @Typed вообще, вы потеряете все преимущества Groovy ++.

СМЕШАННАЯ политика типов оптимизирует статические места, если это возможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top