タグ付けされた質問 「groovy」

Groovyは、Smalltalk、Python、Rubyの一般的な機能を追加しながらJavaを改善するように設計されたJavaベースの「次世代」プログラミング言語です。Groovy構文はJavaのスーパーセットであり、Java開発者はGroovyで学習しながらコーディングを開始できます。Groovyは完全にオブジェクト指向で動的であり、Javaとシームレスに統合されます。市場では、Groovyの成功は誰もが推測しています。主な競合相手はRuby、Scala、Closureです。

3
FutureとPromiseの違いは何ですか?
未来と約束の違いは何ですか?(AkkaとGparsで。) 彼らはブロックと同じように見えますが、getが呼び出され、将来の結果を取得することが約束されているときに未来の値を返します。
73 api  scala  groovy  akka 

5
Groovyはなくなりますか?[閉まっている]
この質問は何度も聞かれたと思います。しかし、私はこれらの言語の将来は何であるかという意図を持ってもう一度尋ねたいです。 私は最初にGroovyを紹介され、本当に気に入っていました。構文がよりシンプルで、Javaにはるかに近いと感じ、Grailsをすばやく学習することができました。 それからScalaがあり、ウェブフレームワークはLiftです。私はまだScalaを学んでおり、時には構文が非常に難しいと感じています。 しかし、Groovyの将来はどうなるのか、まだ疑問に思っています。Groovyの作者が、Scalaを知っていればgroovyを作成したことはなかったと言ったとき、未来があるのではないかと思うようになります。もちろん、Groovyは大きな進歩を遂げており、Grailsは今日多くの大企業で使用されています。 もし今日Grails対Liftを見るとすれば、Grailsが勝者になります。より多くの企業がそれを使用しています。しかし、これまで述べてきたことをすべて考えると、Groovyに投資すべきかどうか知りたいと思いますか?Groovyは廃止され、Scalaはより良い選択ですか?BMWのCEOがメルセデスを運転すると言ったら、なぜ私たち全員がメルセデスも運転してはいけないのか疑問に思うでしょう。 (この質問が本当に広範で、閉じられている可能性があるかどうかは理解しています。しかし、他の人のためのオープンなWikiにしたいと思っています。)
30 java  scala  groovy  grails 

2
Groovyでdefを使用する場合
私はGroovyで少しの間開発を続けてきましたが、どのくらいの頻度でダイナミックキャスティングを使用する必要があるのdefでしょうか?私の同僚は、Groovyが私には理解できない何らかの形で役立つので、常に使用すべきだと考えています。 現在、メソッドの戻り値の型と引数を宣言するとき、どのオブジェクトを取り込み、吐き出すかを意図的に述べたいと思います(コードを読みやすくするために、Javaのバックグラウンドから来たのは理にかなっています)例: String doSomething(String something){ //code } // vs def doSomething(def somthing){ //code } // vs def doSomething(somthing){ // code } だから、私の質問は、いつ使用するdefかという好みだけですか、それを常に使用することに本当の利点があるのでしょうか?(最後の例を追加したのは、Groovyの実行可能なオプションとしての質問に収まると感じたからです)

3
Groovyで明示的なreturnステートメントを記述するタイミング
現時点では、Groovy / Grailsプロジェクト(私はまったく新しい)に取り組んでおりreturn、Groovyメソッドでキーワードを省略するのは良い習慣かと思います。私の知る限り、キーワードを明示的に挿入する必要があります。つまり、ガード句の場合、他のどこでも使用する必要がありますか?私の意見では、追加のreturnキーワードは読みやすさを向上させます。それとも、あなたはただ慣れなければならないものですか?そのトピックに関するあなたの経験は何ですか? いくつかの例: def foo(boolean bar) { // Not consistent if (bar) { return positiveBar() } negativeBar() } def foo2() { // Special Grails example def entitiy = new Entity(foo: 'Foo', bar: 'Bar') entity.save flush: true // Looks strange to me this way entity }

4
インスタンスフィールドに依存しないメソッドを静的にしますか?
最近、統合テストフレームワーク用、Javaプロジェクト用にGroovyでプログラミングを開始しました。Intellij IDEAをGroovyプラグインで使用していますが、非静的でインスタンスフィールドに依存しないすべてのメソッドの警告として表示されて驚いています。ただし、Javaでは、これは問題ではありません(少なくともIDEの観点から)。 インスタンスフィールドに依存しないすべてのメソッドを静的関数に変換する必要がありますか?trueの場合、これはGroovy固有のものですか、それとも一般的なOOPで利用可能ですか?なぜ?

4
Groovyは部分的なアプリケーションを「カリー化」と呼びますか?
Groovyには、「カリー化」と呼ばれる概念があります。Wikiの例を次に示します。 def divide = { a, b -> a / b } def halver = divide.rcurry(2) assert halver(8) == 4 ここで何が起こっているかについての私の理解は、 divide値2にバインドされているということです。これは、部分的なアプリケーションの形式のようです。 通常、カリー化という用語は、一連の引数をとる関数を、1つの引数のみを取り、別の関数を返す関数に変換することを意味するために使用されます。たとえばcurry、Haskell の関数のタイプは次のとおりです。 curry :: ((a, b) -> c) -> (a -> (b -> c)) Haskellのを使用していない人のためにa、bそしてc、すべての一般的なパラメータです。 curryは、2つの引数を持つ関数を受け取りa、からbまでの関数を受け取って返す関数を返しますc。これを明確にするために、型に余分な括弧を追加しました。 グルーヴィーな例で何が起こっているのか誤解しているのですか、それとも単に部分的なアプリケーションの名前を間違っているのですか?または、実際には両方を行います。つまりdivide、カリー化された関数に変換し、2この新しい関数に部分的に適用します。

1
GroovyはTennentの通信原理に従っていますか?
Tennent's Correspondence Principleの興味深い議論と、Neal Gafterの簡単な説明を以下に示します。 原則では、式またはステートメントは、クロージャーにラップされてすぐに呼び出されたときに、クロージャーにラップされる前と同じ意味を持つ必要があります。クロージャでコードをラップするときのセマンティクスの変更は、おそらく言語の欠陥です。 Groovy言語はこの原則に従っていますか?

1
「構文酢」とはどういう意味ですか
Groovy in Action、第2版を読んでいて、脚注で次のテキストを見つけました Javaは、プログラマーがそれを使用するのを思いとどまらせるために、そのような構成体に「構文酢」をかけます。 syntax vinegarここでいう用語の意味は? この用語を聞いたことがなく、DuckDuckGoとGoogleで検索しましたが、意味が見つかりませんでした。しかし、それは複数の場所で使用されています。誰かがこの用語の意味と、それがプログラミング言語の文脈でどのように適用されるかを明確にできれば素晴らしいと思います。これが有効な質問となることを願っています。私がこれを尋ねることができる他のstackexchangeサイトを見つけることができませんでした。
12 java  syntax  groovy 

5
Grailsフレームワークの落とし穴[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Grailsフレームワークの使用に関する最大の問題/落とし穴は何ですか?私は今フレームワークを学んでおり、本当に気に入っていますが、それを使用するときに遭遇する可能性のある主要な問題とそれらを回避する方法を知る必要があります。

1
Groovyの特性、継承、インターフェース、いつ使用するのですか?
私はGroovyを学んでいて、2.3で追加された新機能であるTraitsの追加について学びました。今の私には、Traitsを使用すると、基本的にスーパークラスとインターフェイスで実行できるすべてのことを実行できるように見えます。 Groovyにトレイトを追加すると、継承とインターフェースが廃止されますか? そうでない場合、これらの各メカニズムを使用するのに最適な時期はいつですか?

4
カレーや部分塗布の何が特別ですか?
私は関数型プログラミングに関する記事を毎日読んでおり、可能な限りいくつかのプラクティスを適用しようとしています。しかし、私はカレーや部分的なアプリケーションで何がユニークなのか理解していません。 例として、このGroovyコードを見てみましょう。 def mul = { a, b -> a * b } def tripler1 = mul.curry(3) def tripler2 = { mul(3, it) } 私は違いが何であるかを理解していないtripler1とtripler2。どちらも同じではないですか?「カレー化」は、Groovy、Scala、Haskellなどの純粋または部分的な関数型言語でサポートされています。ただし、別の名前付きまたは匿名を作成するだけで、同じこと(左カレー、右カレー、nカレー、または部分アプリケーション)を実行できます。tripler2ほとんどの言語(Cでも)でパラメーターを元の関数(など)に転送する関数またはクロージャー ここで何か不足していますか?Grailsアプリケーションでカレーや部分的なアプリケーションを使用できる場所はありますが、「どうして違うの?」 教えてください。 編集:皆さんは、デフォルトのパラメーターを元の関数に転送する別の関数を作成/呼び出すよりも、部分的なアプリケーション/カリー化が単に効率的であると言っていますか?

5
JVMベースの言語の中で明確なリーダーはいますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 これらのプロジェクトの現在の状況はどのようなもので、どれか1つ(または2つ)が明確なリーダーとして浮上していますか? この質問をする私の動機を示すために、数年前にあなたの心を投げ返してください。プロトタイプとjQueryは、MooToolsのような他のプレイヤーも生き残るために戦っていました。今日に早送りしてください。一般的なコンセンサスは、jQueryが最高の汎用JavaScriptライブラリーであるということです。 これらのJVMベースの言語を使用して、過去数年間で同様のことが起こりましたか?特定の言語が荒廃し、放棄されたことがありますか?私が読んだことから、Scalaは確かにお気に入りになる準備が整っているようですが、繰り返しますが、私が読んだほとんどすべてが数年前のものです。 もう少し調査を行いました。Googleトレンドを使用して、何年にもわたって検索ボリュームをチェックするというアイデアがありました。Groovyのボリュームが減少し、Scalaのボリュームが一定(最悪)またはわずかに増加(最高)の間、JythonとJRubyは比較的関心がないようです。これは正確な評価ですか? そして、はい、Jython、JRuby、Groovy、Scala、Clojureなど、JVM上の非Java言語を指します。
9 java  scala  jvm  groovy  jruby 

3
JythonとJRuby対Groovy(およびJava)[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 私はJVMでプログラミングするためにPythonに非常に興味があり、JavaとRuby(JRubyではない)で、そしてある程度Groovyで働いてきました。 現在、Java-JythonとJava-JRubyの統合にはどのような制限がありますか?Groovyについてはどうですか:JavaクラスがGroovyクラスでできないことを実行できることはありますか?また、IDE統合についてはどうですか(主にEclipseですが、IntelliJとNetbeansも興味深いものです)。 Python、Ruby、Groovyのどちらが優れている/より簡潔であるかは関係ありません。現在、彼らがJVMとツール(特にIDE)でどれだけうまく機能しているかに興味があります。私の主な関心は、それが重要な場合は、Webサーバーの内部ではありません。 カスタムJavaクラスを拡張し、カスタムJavaインターフェースを実装するHelloWorldを取得する簡単な例は、私にとって非常に役立ちます。
8 java  jruby  groovy  jvm 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.