私はGroovyを手に入れているJavaプログラマです。私のコードでは、GroovyのA-Okayと思われるJava固有の構文が混在しています。Groovyでの静的文字列の使用Switch-Caseステートメント
Groovyが静的変数をCASE
パラメータとして受け入れない理由を誰にも説明できますか?もしそうなら、私がここで間違っていることを見ることができますか?私は、これはあなたのコードは、あなたのために働いていない理由のあなたの質問に答えていませんが、あなたのコードを実装するために、わずかにgroovier /より良い方法をしたい場合は、そう、マップに自分の価値観を投げる可能性が知っている
public static final String HIGH_STRING = "high";
public static final String LOW_STRING = "low";
... //other code, method signature, etc.
def val = "high";
switch (val) {
case HIGH_STRING:
println("string was high"); //this won't match
break;
case LOW_STRING:
println("string was low"); //this won't match
break;
//case "high":
// println("string was high"); //this will match because "high" is a literal
// break;
default:
println("no match");
}
... //other code, method closeout, etc.
あなたのテストケースは私の仕事です。失敗した場所で完全なテストを投稿してください。また、groovyのどのバージョンを使用していますか? – ataylor
あまりにも私のための作品:) –
あなたたちは正しいです。私はGrailsアプリケーションで作業しています。サービスクラスでこの 'switch 'をやっています。私のアプリが動いている間に 'public static final'宣言を追加しました。Grailsはそれに応じてクラスを更新しているようです。私はそうではないことを発見しました(奇妙なことに、他のコードの変更が行われていたときに、それらの 'public static final'varsのみで)。私は自分のアプリを新しく再起動し、今は動作します。 – Marc