OpenSCAD中范围表达式的数据类型



在OpenSCAD中,for循环可以指定一个形式为[first:step:last]的范围,其中step:是可选的。您似乎也可以将范围表达式分配给变量。

range = [1:10];
for (i = range) echo(i); // works as expected
// But the range expression is _not_ a special form of list
// comprehension because `range` is not a list:
echo(range);  // prints [ 1 : 1 : 10 ]
echo(range[0], range[1], range[2], range[3]); // prints 1, 1, 10, undef
echo(is_list(range));  // prints false
// Also, this results in an error:
echo(len(range));

有时候,对于函数或模块来说,拥有一个范围形参而不是需要两个或三个单独的数字形参来达到相同的效果是很有用的。

范围表达式是否具有特定的数据类型,或者这是实现的工件?如果有特定的数据类型,是否有一种方法(除消除过程之外)用于函数测试参数是否已绑定到范围表达式?

范围表达式没有特定的数据类型。

范围值是可索引的。它的元素是数字,但不是列表。

function is_range(x) = is_num(x[0]) && !is_list(x);

相关内容

最新更新