0

次のGroovy/Gremlinスニペットの違いは何ですか?(両方とも* .groovyファイルとして保存され、で実行されます./gremlin.sh -e [filename].groovy

class user
{
    String username

    static void main(String[] args)
    {
        user mtm = new user()
        mtm.username = "MuffinTheMan"
        println mtm.username
    }
}

class User
{
    String username

    static void main(String[] args)
    {
        User mtm = new User()
        mtm.username = "MuffinTheMan"
        println mtm.username
    }
}

1つ目は、これに似た3つのコンパイルエラーを示します。

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 7: Apparent variable 'mtm' was found in a static scope but doesn't 
refer to a local variable, static field or class. Possible causes:
You attempted to reference a variable in the binding or an instance variable from
a static context.
You misspelled a classname or statically imported field. Please check the spelling.
You attempted to use a method 'mtm' but left out brackets in a place not allowed
by the grammar.
@ line 7, column 14.
user mtm = new user()

2つ目は、コンパイルと実行が正常に行われ、次のように出力されます。

MuffinTheMan
4

1 に答える 1

0

唯一の違いは、最初のクラス名が小文字で始まり、2番目のクラス名が大文字で始まることです。ここでは少し議論がありますが、この問題に関する多くの良い情報を見つけるのは困難です。私のコード(最初の文字が小文字のクラス名)がコンパイルされない理由を理解しようとして(文字通りではなく)壁に頭をぶつけていたので、これを投稿することにしました。おそらく他の人がこの問題を抱えている可能性があります。

他の誰かがこの問題に関するより完全で明確な議論へのより良いリンクを持っているなら、それを投稿してください!

于 2013-03-15T17:10:15.973 に答える