String 在OpenSCAD中构造字符串 在OpenSCAD中,我想创建一个字符串,模式>代码>,从“a”开始,以“c”结尾,在b中有足够的“b”,即 LeN(模式)< /C> >等于单元< /代码>。例如,如果单位是5,模式应该是“abbbc”

String 在OpenSCAD中构造字符串 在OpenSCAD中,我想创建一个字符串,模式>代码>,从“a”开始,以“c”结尾,在b中有足够的“b”,即 LeN(模式)< /C> >等于单元< /代码>。例如,如果单位是5,模式应该是“abbbc”,string,list,openscad,String,List,Openscad,到目前为止,我拥有的最佳解决方案是列表理解: pattern = [if (units > 0) "a", if (units > 2) for (i = [1:units - 2]) "b", if (units > 1) "c"]; 这样就可以了,但理想情况下我想从这个列表中创建一个字符串?我尝试了str(pattern),但它给出了列表的字符串表示,带有括号、引号和逗

到目前为止,我拥有的最佳解决方案是列表理解:

pattern = [if (units > 0) "a",
           if (units > 2) for (i = [1:units - 2]) "b",
           if (units > 1) "c"];
这样就可以了,但理想情况下我想从这个列表中创建一个字符串?我尝试了
str(pattern)
,但它给出了列表的字符串表示,带有括号、引号和逗号


是否有一种替代列表理解的方法可以自然生成一个字符串?

不确定这是否是最简单的方法,但这会进行转换:函数到_str(v,i=0,s=”“)=i>=len(v)?s:to_str(v,i+1,str(s,v[i])@TorstenPaul:我希望OpenSCAD擅长尾部递归!我相信这个函数至少在最新版本中会达到消除尾部递归的效果。不过,它目前确实将迭代次数限制在100万次。OpenSCAD的速度不是很快,但它在我的系统上大约1秒就可以完成:echo(to_str([for(a=[0:100000])chr(a%26+97)];