配列リテラルの記述が、カンマが一個多くても正常に動作するよ
いつものことですが、人のソースを見ているととても勉強になる。
作業予定表から週単位で作業量を積み上げる Groovyで どう書く?org
をのんびり見ているときのこと。
以下のようなソースの記述を見つけ、「あれ?カンマ一個多いな。」と思った。
// ワークプランリスト def workPlanList = [ new Plan(date:'2009/1/10', days: 21, mark:'#'), new Plan(date:'2009/1/15', days: 6, mark:'@'), new Plan(date:'2009/1/10', days: 8, mark:'*'), new Plan(date:'2009/1/16', days: 1, mark:'='), new Plan(date:'2009/1/16', days: 3, mark:'%'), new Plan(date:'2009/1/30', days: 4, mark:'='), ]
しかし、不思議なことに、これは正常に動作する。
もしやと思って以下のコードを実行してみると・・・
println([1, 2, 3, 4, 5, ]) println([1, 2, 3, 4, 5, ].size())
>> [1, 2, 3, 4, 5, ]
>> 5
あら、正常に動作した。最後のカンマは無視されるのかな?でも以下のようなコードはカンマが全行にあったほうがコーディングしやすい(マクロとか使うとき楽だし、こぴぺもしやすい)
def list = [ "たろう", "はなこ", "さぶろう", "しろう", ]
面白い。
ディスカッション
コメント一覧
どうも、fumokmmです。
これ、Javaでも正当な構文ですよね。
配列の宣言時にはカンマが多くてもOKなんですが、メソッド呼び出しの時は多いと怒られます(コンパイルエラーになります)。
しかし、Groovyだとメソッド呼び出し時でもこの構文が使えました。さすがGroovy。
>fumokmmさん
ありがとうございます。
Javaでも正当な構文なんですか、また知らなかった…
Javaも知らないこと多いな、自分。