Я пытаюсь выяснить, возможно ли преобразовать color
s в массивы с помощью {red|green|blue}part
этого макроса
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 ;
который используется таким образом
arrayFromColors(A)((0,1,2),(3,4,5));
но всегда выдает ошибку:
metafun > log > error: Не реализовано: decimal(неизвестное число)
Итак, возможно ли преобразовать color
s в массивы таким образом?
решение1
Ладно, я нашел, в чем проблема.
Я попытался напечатать полный массив, A[1]
например, с помощью message
, но, похоже,message
не удается распечатать полный массив в журнале компиляции.
Я попробовал с другим массивом, объявленным вручную, проверить
numeric a[] ;
a[0] = 0 ;
a[1] = 1 ;
a[2] = 30 ;
message a ;
и он терпит неудачу с той же ошибкой
metafun > log > error: Не реализовано: decimal(неизвестное число)
слишком.
A[1][1]
Однако, например , при доступе к значениям по одному , message
правильно выводит значение 4
, как и должно быть, с помощью небольшого фрагмента кода из моего вопроса.