====== Tipos de datos ======
===== Números =====
Números en notación decimal, ejemplos: -1, 42, 0.5, 2.99792458e+8.\\
OpenSCAD no soporta números en formato octal, hexadecimal, etc.
===== Valores booleanos =====
Valores TRUE/FALSE. Son el resultado de la evaluación de condiciones.
===== Strings =====
Los strings son cadenas de caracteres, no confundirlos con vectores cuyos elementos son caracteres, que son cosas distintas.\\
Se indican siempre entre ". Se usa como carácter de escape '\'.\\
===== Rangos =====
Define una secuencia de números:
[:]
[::]
Se usan por ejemplo en bucles for.
===== Valor indefinido y NaN =====
* **undef** es el valor inicial de una variable que no ha sido inicializada, ni tiene asignada ningún valor. Suelen retornarlo las funciones a las que se les ha pasado argumentos no válidos. Puede usarse como el valor NULL en otros lenguajes de programación. Según el contexto puede tomarse como false (funciones lógicas).
* **NaN** Quiere decir 'Not a Number' y suele indicar un argumento ilegal u operaciones que no pueden realizarse, por ejemplo 0/0.
===== Variables =====
Las variables se asignan sin necesidad de especificar el tipo de dato. Ejemplos:
var = 25;
xx = 1.25 * cos(50);
y = 2*xx+var;
logic = true;
MyString = "This is a string";
a_vector = [1,2,3];
rr = a_vector[2]; // member of vector
range1 = [-1.5:0.5:3]; // for() loop range
xx = [0:5]; // alternate for() loop range
Las variables son calculadas en tiempo de compilación, no de ejecución.
===== Vectores =====
Los vectores son secuencias de datos de cualquier tipo (en cambio los arrays son secuencias de datos del mismo tipo). Ejemplos:
[1,2,3]
[a,5,b]
[]
[5.643]
["a","b","string"]
[[1,r],[x,y,z,4,5]]
[3, 5, [6,7], [[8,9],[10,[11,12],13], c, "string"]
[4/3, 6*1.5, cos(60)]
Para crear vectores, se especifican entre corchetes:
cube([10,15,20]);
a1 = [1,2,3];
a2 = [4,5];
a3 = [6,7,8,9];
b = [a1,a2,a3]; // [ [1,2,3], [4,5], [6,7,8,9] ] note increased nesting depth
Es posible meter vectores como elementos en otro vector.
e = [ [1], [], [3,4,5], "string", "x", [[10,11],[12,13,14],[[15,16],[17]]] ]; // length 6
address length element
e[0] 1 [1]
e[1] 0 []
e[5] 3 [ [10,11], [12,13,14], [[15,16],[17]] ]
e[5][1] 3 [ 12, 13, 14 ]
e[5][2] 2 [ [15,16], [17] ]
e[5][2][0] 2 [ 15, 16 ]
e[5][2][0][1] undef 16
e[3] 6 "string"
e[3 ][2] 1 "r"
s = [2,0,5]; a = 2;
s[a] undef 5
e[s[a]] 3 [ [10,11], [12,13,14], [[15,16],[17]] ]