可以将颜色转换为数组吗?

可以将颜色转换为数组吗?

我试图弄清楚是否可以使用这个宏将colors 转换为数组{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 > 错误:未实现:十进制(未知数字)

那么,是否可以将colors 转换为这样的数组?

答案1

没关系,我发现问题所在了。

我尝试打印一个完整的数组,A[1]例如,使用message,但似乎message无法在编译日志中打印完整的数组。

我尝试用另一个手动声明的数组来检查

numeric a[] ;
a[0] = 0 ;
a[1] = 1 ;
a[2] = 30 ;
message a ;

并因同样的错误而失败

metafun > log > 错误:未实现:十进制(未知数字)

也。

但是,当逐个访问值时,A[1][1]例如,可以使用我的问题中的一小段代码message正确地打印该值。4

相关内容