Jdi na navigaci předmětu

Proměnné v OpenSCADu: Co jde a co ne

Ukázka 1. Tohle jde
variable = 5;
Ukázka 2. Tohle nejde. Respektive nebude to fungovat tak, jak byste si mohli myslet
variable = 5;
      echo(variable);
      variable = 6;
      echo(variable);
Ukázka 3. Tohle jde, protože hodnoty argumentů existují v jiném namespacu
module foo(arg) {
          arg = 3;
      }
Ukázka 4. Změněná hodnota arg bude platiti jen uvnitř těla ifu
module foo(a) {
          a = 5;
          echo(a); // a je 5
      
          if (a > 10) {
              a = 2;
              echo(a); // a je 2
          } else {
              a = 3;
              echo(a); // a je 3
          }
          echo(a); // a je 5
      }
Ukázka 5. Tohle ale jde
module foo(arg) {
          arg = arg >= 0 ? arg : 0;
          // ... arg je změněný, pokud něco
      }
Ukázka 6. Ale samozřejmě, arg je v celém modulu stejný
module foo(arg) {
          echo(arg); // vypíše změněný arg!
          arg = arg >= 0 ? arg : 0;
      }
Ukázka 7. Jde to ale udělat jenom jednou, tohle nejde
module foo(arg) {
          arg = 5;
          echo(arg); // 3
          arg = 3;
      }
Ukázka 8. Ani tohle nejde
module foo(arg) {
          arg = arg >= 0 ? arg : 0;
          arg = arg <= 10 ? arg : 10;
      }
Ukázka 9. Musí se to spojit do jednoho komplikovaného ternárního operátoru nebo si na to napsat funkci
arg = xyz(arg);