OpenSCAD 中范围表达式的数据类型
Data type of a range expression in 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);
在 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);