2009-07-28 29 views
10

Jeśli mam ten kod:Groovy mapa błąd składni


import javax.swing.* 
import java.awt.image.* 

def xMap = [ 
    BufferedImage.TYPE_3BYTE_BGR  : "3 byte BGR", 
    BufferedImage.TYPE_4BYTE_ABGR : "4 byte ABGR", 
] 

IDE będzie generować ten błąd:

illegal colon after argument expression; 
    solution: a complex label expression before a colon must be parenthesized at

Czy istnieje inne rozwiązanie niż do tej napisać:


def type_3byte_bgr = BufferedImage.TYPE_3BYTE_BGR 

dla wszystkich stałych?

Odpowiedz

20

Literały mapy wymagają, aby ich klucze były prawidłowymi identyfikatorami lub w nawiasach. Powinno to zadziałać:

def xMap = [ 
    (BufferedImage.TYPE_3BYTE_BGR)  : "3 byte BGR", 
    (BufferedImage.TYPE_4BYTE_ABGR) : "4 byte ABGR",] 
2

Komunikat o błędzie informuje, jak go rozwiązać: nawiasuj wyrażenie etykiety.

import java.awt.image.BufferedImage 

def xMap = [ 
    (BufferedImage.TYPE_3BYTE_BGR)  : "3 byte BGR", 
    (BufferedImage.TYPE_4BYTE_ABGR) : "4 byte ABGR", 
] 

println xMap[BufferedImage.TYPE_3BYTE_BGR] 
+4

Steruj swoim językiem, proszę. – Geo