问题描述
错误:大括号中的listelement后跟“]]”而不是空格
代码:
create_pattern -layers { [list [list {vertical_layer: m12} [list width: $m12_width] [list pitch: $m12_pitch] {spacing: interleaving} {trim: false } {track_alignment: track}]]
[list [list {vertical_layer: m11} [list width: $m11_width] [list pitch: $m11_pitch] {spacing: interleaving} {trim: false } {track_alignment: track}]]
}
解决方法
您遇到的问题是,您将所有列表构造都用大括号括起来,这将其转换为其他内容(您可能不想要;文字列表解析器将[list
视为实际列表中的单词,并被}]]
弄糊涂,因为它是故意愚蠢的代码,因此它也是可预测的代码)。正在进行的嵌套数量非常令人困惑,而且显然是出乎意料的。
我猜您最好通过一个帮助程序来生成组件结构,然后再使用它:
proc LayerDescriptor {id width pitch} {
# I'm not sure that this is right,but it would be a lot less surprising than a list of lists of lists of things
return [list \
[list vertical_layer: $id] \
[list width: $width] \
[list pitch: $pitch] \
{spacing: interleaving} \
{trim: false } \
{track_alignment: track}]
}
create_pattern -layers [list \
[LayerDescriptor "m12" $m12_width $m12_pitch] \
[LayerDescriptor "m11" $m11_width $m11_pitch]]
请注意使用反斜杠来引用所有换行符。它们在这里很重要。