VEX. Массивы и foreach

Поделиться
HTML-код
  • Опубликовано: 17 окт 2024

Комментарии • 13

  • @SK-hj1xh
    @SK-hj1xh 2 месяца назад

    Шикарно!!!

  • @jiper100
    @jiper100 2 месяца назад

    Супер!!!

  • @effic3452
    @effic3452 2 месяца назад

    Друг ты хорош, постоянно выкладываешь видео с малым количеством пдп, подписался, рви пределы дальше

    • @pscale
      @pscale  2 месяца назад

      Спасибо большое! У меня пока есть возможность поучиться, помоделить что хочу, пописать скриптики и поделиться конечно)

  • @Nemon63
    @Nemon63 2 месяца назад

    Супер, теория и пояснения . Благодарю!

  • @your_mmajesty
    @your_mmajesty 2 месяца назад

    Дядь, хороша теория, продолжай делать🔥

  • @fourbytes1
    @fourbytes1 2 месяца назад

    Кто будет читать комментации, автор пропустил довольно важный момент про индексирование в массиве.
    Границы массива НЕ проверяются во время выполнения. Чтение за пределами границ массива вернет 0 или "" в случае целочисленного или строкового массива. Сейчас компилятор не выдаёт предупреждений если вы укажете индекс больше длины массива, это может совпадать с вашими ожиданими или нет, но логику программы изменить сможет.
    А так же запись за границами массива изменит размер массива, например начальный размер массива был 5, а потом мы обращаемся к 99 элементу и присваиваем новое значение, array[99] = 42, его размер изменится и станет 100, а новые записи будут установлены в 0 или "".
    Читайте господа почаще хелп.

    • @pscale
      @pscale  2 месяца назад

      Спасибо большое за дополнения. В этом плане жаль что в VEX нет кортежей (которые не изменить прямым обращением). Да, я согласен, это все просто не выучить, да и не рационально это, намного лучше понять... и иногда лучше перечитывать и тестить самому.

    • @fourbytes1
      @fourbytes1 2 месяца назад

      @@pscale вообще тут хорошо бы просто перезрузить оператор [] чтобы во время индексации этот оператор и чекал баунды, но имеем, что имеем. И в VEX так же есть 2 вспомогательные функции getcomp и setcomp которые делают тоже самое, что и оператор [], что вообще никак не помогает.
      Поэтому я делал такую обёртку: перегружал свою функцию get для разных типов и потом подключал хидер когда это было нужно. Тоже самое можно сделать и для set когда нужно явно устанавливать значение по правильному индексу.
      #define GET(type) \
      function ##type get(##type array[]; int idx){ \
      if(!isvalidindex(array, idx)){ \
      error("index out of bounds: the len is %d but the index is %d", len(array), idx); \
      } \
      return array[idx]; \
      }
      GET(int)
      GET(float)
      GET(string)
      int xs[] = {0, 1, 2};
      float fs[] = {1.3, 2.3, 3.4};
      string ss[] = {"red", "green", "blue"};
      i@integer = get(xs, 1);
      // i@integer2 = get(xs, 100); Error!
      f@flt = get(fs, 2);
      s@str = get(ss, 0);

  • @АлександрШрайк
    @АлександрШрайк 2 месяца назад +1

    срочно надо все задублировать на рутубе

    • @pscale
      @pscale  2 месяца назад +1

      В процессе.

  • @zzzzzzzz6180
    @zzzzzzzz6180 2 месяца назад

    Привет, мог бы ты объяснить зачем определять вектор tan1, если в результате получаем tan который направлен в противоположную сторону? Ведь вектор tan тоже без отклонений. Почему его нельзя использовать?

    • @pscale
      @pscale  2 месяца назад

      Приветствую! Да я проверял, можно. Я обычно всегда для подобных целей воссоздаю прообраз системы координат от нормалей и тангенсов...возможно перемудрил. А так любой перпендикуляр к нормали по сути тангенс и им можно мерять отклонения.