Ich versuche herauszufinden, ob es möglich ist, color
s in Arrays umzuwandeln mit {red|green|blue}part
und diesem Makro
vardef arrayFromColors(suffix $)(text c) =
save i_ ; i_ = 0 ;
numeric $[][] ;
for i = c:
for j = 0 upto 2:
if j = 0: $[i_][j] = redpart i ;
elseif j = 1: $[i_][j] = greenpart i ;
else: $[i_][j] = bluepart i ;
fi
endfor ;
i_ := i_+1 ;
endfor ;
enddef ;
das so verwendet wird
arrayFromColors(A)((0,1,2),(3,4,5));
aber es schlägt immer mit diesem Fehler fehl:
metafun > log > Fehler: Nicht implementiert: Dezimalzahl (unbekannte Zahl)
color
Ist es also möglich , s auf diese Weise in Arrays umzuwandeln ?
Antwort1
Egal, ich habe herausgefunden, was nicht stimmte.
A[1]
Ich habe beispielsweise versucht, mit ein vollständiges Array auszudrucken , aber im Kompilierungsprotokoll message
scheint kein vollständiges Array ausgedruckt werden zu können.message
Ich habe versucht, mit einem anderen Array, von Hand deklariert, zu überprüfen,
numeric a[] ;
a[0] = 0 ;
a[1] = 1 ;
a[2] = 30 ;
message a ;
und es schlägt mit dem gleichen Fehler fehl
metafun > log > Fehler: Nicht implementiert: Dezimalzahl (unbekannte Zahl)
zu.
Beim Zugriff auf einzelne Werte wird jedoch A[1][1]
beispielsweise mit dem kleinen Codestück aus meiner Frage message
der Wert korrekt und wie vorgesehen ausgedruckt .4