Используя Open SCAD, у меня есть модуль, который, как и cube()
, имеет параметр size
, который может быть единственным значением или вектором трех значений. В конечном счете, я хочу вектор трех значений.Включить тип аргумента
Если вызывающий абонент передает одно значение, я хотел бы, чтобы все три значения вектора были одинаковыми. Я не вижу ничего в документации по языку об обнаружении типа аргумента. Так что я придумал этот хак:
module my_cubelike_thing(size=1) {
dimensions = concat(size, size, size);
width = dimensions[0];
length = dimensions[1];
height = dimensions[2];
// ... use width, length, and height ...
}
Когда size
одно значение, результат concat
именно то, что я хочу: три копии значения.
Когда size
является трехзначным вектором, результат concat
является девятизначным вектором, а мой код просто игнорирует последние шесть значений.
Это работает, но только потому, что то, что я хочу в случае с одним значением, - это репликация значения. Есть ли общий способ включения типа аргумента и делать разные вещи в зависимости от этого типа?