Autor Thema: Problem bei Funktionen mit mehr als 3 Parametern  (Gelesen 2133 mal)

derburn

  • Member
Problem bei Funktionen mit mehr als 3 Parametern
« am: Mittwoch, 9. März 2011, 17:41 »
Hallo allerseits,

ich habe ein Problem beim Definieren einer Funktion mit mehr als 3 Parametern (lilypond-Version 2.12.2).
Die Funktion sieht folgendermaßen aus:

#(define-markup-command (fourCards layout props letterOne letterTwo letterThree letterFour) (string? string? string? string?)
  "Print a line of four cards."
  (interpret-markup layout props
   (markup
     #:left-column (
       #:line(
         #:column (#:hcenter-in 40 (#:card letterOne))
         #:hspace 1
         #:column (#:hcenter-in 40 (#:card letterTwo))
         #:hspace 1
         #:column (#:hcenter-in 40 (#:card letterThree))
         #:hspace 1
         #:column (#:hcenter-in 40 (#:card letterFour)))))))

Die Methode #:card zeichnet eine Box mit dem angegebenen Buchstaben als Inhalt, d.h. mit der Methode fourCards
sollte eigentlich eine Zeile mit 4 Karten entstehen.

Aufruf:

\markup \fourCards #"A" #"B" #"C" #"D"
Der Aufruf ergibt den Fehler: "no parser tag defined for this markup signature"
und in der betreffenden Aufrufzeile entsteht die Meldung:
"syntax error, unexpected SCM_TOKEN
\markup \fourCards
                   #"A" #"B" #"C" #"D"
"

Jetzt könnte ich noch an falsche Syntax glauben.
Sowie ich aber den 4. Parameter weglasse und beispielsweise #:card letterFour mit #:card letterThree ersetze,
(und natürlich beim Aufruf nur bis zum "C" übergebe), habe ich (fast) genau das, was ich wollte:
eine Zeile mit 4 Karten, worin die ersten 3 Buchstaben angezeigt werden, der dritte dank meiner Ersetzung doppelt.

Gibt es etwa eine ungeschriebene Regel, die sagt: nicht mehr als 3 Parameter bei markups?
So einen Fehler habe ich bislang noch nie beobachtet - ich bin ziemlich ratlos...

Was ebenfalls nicht funktioniert, ist, den 4. Parameter nicht als string, sondern z.B. als Nummer zu übergeben
(und weiter zu ignorieren). Ich kann machen, was ich will: sowie ich den 4. Parameter hinzu nehme, erscheinen o.g. Fehlermeldungen.

Hat jemand schon mal so was Verrücktes gesehen?
   -
« Letzte Änderung: Donnerstag, 10. März 2011, 10:22 von derburn »

RobUr

  • Member
Re:Problem bei Funktionen mit mehr als 3 Parametern
« Antwort #1 am: Mittwoch, 9. März 2011, 20:56 »
Wo und wie ist denn die Methode #:card definiert?

RobUr

  • Member
Re:Problem bei Funktionen mit mehr als 3 Parametern
« Antwort #2 am: Mittwoch, 9. März 2011, 21:37 »
Mit der Entwicklerversion geht’s! Muss wohl eine Beschränkung in 2.12.3 sein :(

Grüße, Robert

derburn

  • Member
Re:Problem bei Funktionen mit mehr als 3 Parametern
« Antwort #3 am: Donnerstag, 10. März 2011, 10:25 »
Vielen Dank!

Gehe ich recht in der Annahme, dass Du die aktuelle Entwickler-Version 2.13.53-1 bemühst?

Viele liebe Grüße,
Manuel

derburn

  • Member
Re:Problem bei Funktionen mit mehr als 3 Parametern
« Antwort #4 am: Donnerstag, 10. März 2011, 12:08 »
Hallöchen nochmal,

ich hab es jetzt einfach mal mit der neuesten Version (2.13.53-1) probiert - geht.
Danke nochmals!

RobUr

  • Member
Re:Problem bei Funktionen mit mehr als 3 Parametern
« Antwort #5 am: Donnerstag, 10. März 2011, 18:28 »
Ja, ich hatte es mit 2.12.3 und dann mit 2.13.53 probiert.

Grüße, Robert