7

このリンクを見た後、Groovy ++を試してみたいのですが、心配です。

Groovyの構文はすべてGroovy++で有効ですか?

たとえば、Groovyでこれを行うことができます。

def list = [1,2]

上記のコードはGroovy++で有効ですか?

4

6 に答える 6

8

目的(私は信じています)は、可能な限り多くのGroovyコードをサポートできるようにすることです。

現在、機能していない領域がいくつかあると思います。

  1. 複数の割り当て-コンパイルされません
  2. スプレッドドット演算子は、状況によっては問題を引き起こす可能性があります
  3. .with{}は機能しません

ただし、これらの問題はいつでも回避できます。または、これらの問題を必要とするクラスにマークを付けないでください。@Typed

于 2011-09-06T12:32:48.237 に答える
4

http://groovy.dzone.com/articles/groovycomparetogroovy-part-1にコードサンプルとの違いのリストがあります

いくつかの違い:

  • より厳密なコンパイル時チェック
  • ExpandoMetaClassによるオンザフライタイプの変更はありません
  • クロージャはクロージャコード外の変数を変更できません
  • プライベートメソッドへの直接アクセスはありません
于 2011-09-06T12:40:57.543 に答える
2

Groovy ++では次のことができるので、次のようになります。

  • 静的および動的に型付けされたコードの簡単な混合

参照:http ://code.google.com/p/groovypptest/wiki/Welcome

于 2011-09-06T11:56:32.293 に答える
1

@Typed(TypePolicy.MIXED)は、groovy++を使用してコードを最適化することを望んでいる開発者の生活を確かに簡単にします。ただし、Groovyコードを完全にはサポートしていません。

@Typed(TypePolicy.MIXED)を使用したgroovy++コードの互換性にも問題があります

例:Groovyスタイルの型キャスト(キーワード「as」を使用)

 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を使用する必要があるかどうかはわかりません。

于 2012-01-19T19:14:51.047 に答える
1

a)心配しないでください。パフォーマンスは、groovyでもgroovy++でも問題ではありません。どちらの言語でも、主にグルーロジックを作成します。さまざまなJavaライブラリを接続するコード。そして、それらのライブラリはJavaで記述されているため、フルスピードで実行されます。

時々、Groovyで大量のコードを記述したことに気づき、さらに速度を上げたいと思うことがあります。問題ない。Groovyは、アルゴリズムのプロトタイピングに最適です。GroovyはJavaに似た構文を持ち、これらすべてのJavaライブラリを利用するため、プロトタイプをフルスピードで実行されるJavaライブラリに変換することは問題ありません(はい、手動でコーディングする必要がありますが、これはつまり、 groovyコードをjavaに変換するには、これらのショートカットをすべて削除する必要があります)。

b)groovy ++を理解している限り、アノテーションを介して機能します。コードに注釈を付けた場合にのみ、groovy++コードとして認識されます。だからそれはうまくいくはずです。しかし、これらすべての回答からわかるように、パフォーマンスは問題ではないため、現時点でgroovy ++を使用している人はそれほど多くありません(:-)を参照してください。

ところで:groovy++フォークはまもなく標準のgroovyトランクにマージされると思います...

于 2011-09-06T14:51:38.973 に答える
0

Groovy ++は、Groovyと完全に互換性のある@Typed(TypePolicy.MIXED)アノテーションを導入しました。

@Typed(TypePolicy.DYNAMIC)を使用するか、@ Typedをまったく使用しないと、Groovy++のすべての利点が失われます。

MIXED TypePolicyは、可能であれば静的な場所を最適化します。

于 2011-11-01T08:06:33.230 に答える