9785006411692
ISBN :Возрастное ограничение : 12
Дата обновления : 30.06.2024
A) Успешным выполнением
B) Ошибкой
C) Вылетом Datamine
D) Процессы выполнятся, но выходной файл после команды EXTRA не создастся
E) Зависанием Datamine до принудительного завершения пользователем работы макроса
Переменные
Итак, мы с вами написали первый простой макрос (пока «не вы, а мы», но лиха беда начало), автоматизирующий процесс создания рудной выборки. При этом мы условились, что:
– имя файла рудных каркасов – ore_tr/pt;
– имя файла скважин – holes;
– имя поля номера рудного тела – BODY;
– имя поля урезаемых содержаний – AU;
– средняя длина проб, к которой требуется привести рудную выборку – 1 м;
– оптимальная сеть декластеризации – данные расположены по регулярной сети;
– уровень ураганных содержаний одинаков для всех рудных тел – 100 г/т;
– имя файла обработанной рудной выборки holes_ore_cut.
Несложно догадаться, что это не всегда так. Каркасы могут называться по-другому, файл скважин – тоже. Поле содержания – не обязательно AU, а зонального контроля – не обязательно BODY. Ну и далее по списку. Что же делать? Вариантов минимум три:
– Каждый раз перед использованием макроса подгонять имена файлов и полей под то, что написано в макросе.
– Каждый раз перед использованием макроса править весь текст макроса в соответствии с вашими входными условиями.
– Модифицировать макрос так, чтобы правки были понятными, минимальными и простыми.
Первые два варианта – путь сложный и тупиковый. Мы хотели написать «как несложно догадаться…», но поняли, что пока догадаться сложно. Поэтому просто поверьте: первые два варианта – очень плохая идея. И мы, как говорится, пойдем другим путем – то есть третьим из перечисленных.
Для этого третьего пути нам понадобится некая сущность, которой мы можем оперировать либо как числом, либо как строкой – то есть либо выполнять арифметические действия, либо складывать ее с другими строками. Но при этом в то время, когда мы пишем макрос, мы не знаем, какое именно значение принимает эта сущность. То есть нам нужна некая виртуальная «коробка», в которой можно хранить все, что угодно, и при этом заставлять наш макрос производить с этой коробкой любые операции, как будто он имеет дело с тем содержимым, которое в этой коробке находится в момент выполнения макроса. И вот эту коробку в программировании принято называть «переменная». В принципе, переменная в программировании очень похожа на переменную в школьном курсе математики – то есть это некий «икс», который можно складывать, вычитать, умножать и так далее, как будто вы работаете с числом (но при этих операциях мы понятия не имеем, какое там число). Только в программировании в эту коробку можно складывать не только числа: например, применительно к языку макросов – имена файлов или полей (понятно, что в этом случае перечень операций, доступных для переменной, несколько другой).
Итого: переменную в макросе можно определить как контейнер («коробку»), содержимое которого неизвестно в момент написания макроса и определяется по ходу выполнения макроса. Переменная должна иметь имя, которое может состоять из одного или нескольких символов. Над переменными можно выполнять те же операции, что и над их содержимым.
Поскольку то, что вы читаете, не является официальным руководством и не обязано подчиняться строгим правилам изложения материала, здесь нет строгого и «правильного» определения переменной. Если интересно строгое определение – откройте любой поисковик и наберите запрос. То, что написано выше – это объяснение концепции переменной понятным языком (надеемся, что понятным).
Для создания переменной и для задания ее значения в языке макросов используется команда (оператор) LET. Если вы слегка знакомы с английским, можно увидеть поразительное сходство этого оператора с глаголом «to let» (позволять) или с модальным словом «let» (что в вольном переводе означает «пусть!», «а давайте!»). Суть также совпадает: строка
!LET $a# = 10
как бы говорит: «пусть в переменной $a# будет значение 10» или «а давайте засунем десятку в переменную $a#».
Переменная в макросе должна начинаться со знака доллара и заканчиваться знаком решетки.
Переменная может именоваться более, чем одной буквой. То есть переменная вполне может быть названа, например, $hello_its_me#. Причем, мало того, она не то что «может», более того, лучше, чтобы она называлась более чем одной буквой. Хороший стиль программирования (ой, пардон, написания макросов) включает в себя присвоение переменным таких имен, чтобы было примерно понятно, что эта переменная обозначает. Имя переменной $in_tr# для исходного файла треугольников намного лучше, чем, например, $a#. Хотя на работоспособность макроса это не влияет никак (а вот на «читабельность» написанного макроса – очень даже). Но здесь возникает следующее ограничение: длина имени переменной (включая знаки доллара и решетки) не должна превышать 16 символов. То есть называть переменные следует так, чтобы было «примерно понятно», что она содержит, но при этом не стоит увлекаться длиной названий.
Переменные могут содержать строковые (алфавитные) данные, а могут числа. Первые могут представлять собой любой набор символов (включая и цифры), вторые – только цифры, точку как разделитель целой и дробной части и минус как обозначение отрицательного числа. Строковые значения переменным можно присваивать так, как это указано выше, а можно заключать строки в одинарные кавычки:
!LET $third_var# = `hgjf`.
При этом записи
!LET $my_var# = hhh
и
!LET $my_var# = `hhh`
дают одинаковый результат. Возникает закономерный вопрос: а зачем одинарные кавычки, если можно и без них? Можно, но не всегда.
Если вам почему-либо хочется, чтобы строковая переменная содержала пробел – нужны кавычки:
!LET $str_var# = Hello everybody
запишет в переменную $str_var# значение Helloeverybody, а выражение
!LET $str_var# = `Hello everybody`
даст требуемое приветствие в переменной – Hello everybody.
Если строковая переменная должна содержать какие-либо операторы (а она это может, и это очень полезное свойство переменных в макросах) – например, для использования в EXTRA в качестве команды, вот так:
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию (https://www.litres.ru/pages/biblio_book/?art=70820635&lfrom=174836202&ffile=1) на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
notes
Примечания
1
https://nicothin.pro/sublime-text/sublime-text-3-hotkeys.html
2
https://github.com/andrey-vyaltsev/MacrosDatamine/blob/main/Syntax_Datamine.7z
3
https://code.visualstudio.com/
4
https://visualstudio.microsoft.com/ru/
5
https://github.com/andrey-vyaltsev/MacrosDatamine/blob/main/Snippet_vscode.7z
6
https://code.visualstudio.com/docs/editor/portable
7
https://vscode.dev/
8
https://notepad-plus-plus.org/
9
https://softwareengineering.stackexchange.com/questions/148677/why-is-80-characters-the-standard-limit-for-code-width
10
Все книги на сайте предоставены для ознакомления и защищены авторским правом