Sono nuovo di scala macro e ho trascorso un paio di giorni cercando di scrivere il mio primissimo. Ho un problema con la concatenazione di quasiquotes.Scala quasiquote concatenazione
C'è un elenco di clausole case, diciamo il seguente:
val cases = cq"x => 1 " :: cq"_ => 0 " :: Nil
e ho bisogno di costruire un funzione parziale da esso. Il problema è che non ho idea di come incollarli nella quasiquote finale. La documentazione dice che dovrei fare qualcosa di simile:
q"{ case ..$cases }"
ma non funziona se lo faccio.
C'è un modo per creare una partialFunction da un elenco di questo tipo?
Grazie per qualsiasi aiuto.
Credo che questo sia l'approccio corretto. Che errore hai esattamente? – Odomontois
Anche il tuo pattern è un po 'strano 'x => 1' mathes qualsiasi espressione, se fai riferimento ad un valore locale chiamato' x' dovresti usare '\' x \ '=> 1' come patern – Odomontois
L'errore è il seguente : eccezione durante l'espansione macro: java.lang.IllegalArgumentException: scala.collection.immutable.List (case (x @ _) => 1, case _ => 0) non è una rappresentazione valida del caso di corrispondenza del modello. –