2009-07-28 21 views
10

Se ho questo codice:mappa Groovy errore di sintassi


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

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

l'IDE genererà questo errore:

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

c'è un'altra soluzione a questo che scrivere:


def type_3byte_bgr = BufferedImage.TYPE_3BYTE_BGR 

per tutte le costanti?

risposta

20

I valori letterali delle mappe richiedono che le proprie chiavi siano identificativi validi o tra parentesi. Questo dovrebbe funzionare:

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

Il messaggio di errore spiega come risolverlo: parentesi l'espressione dell'etichetta.

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

Controllare la lingua per favore. – Geo