Сцепление
Строки
Функции-члены структуры
Структуры можно сделать весьма эффективными, если включить функции-члены в их определение. Такие функции-члены действуют аналогично обычным функциям, за исключением того что они имеют доступ к данным-членам структуры. Вновь обратившись к примеру описания человека, можно ввести функцию-член, которая возвращает значение высоты человека в сантиметрах, а не в дюймах, например:
structPerson
(
name,
age,
height,
weight,
function GetHeight CM =
(
cmheight = height* 2.54
)
)
В данной функции исходная высота умножается на переводной коэффициент, и затем возвращается новое значение. Используя эту новую функцию, можно написать следующий код:
myPerson = Person "Sue" height: 60
cmh = myPerson.GetHeightCM()
Если затем ввести переменную cmh в окне приемника команд и вычислить ее значение, то в итоге будет получен следующий результат: 152.4.
Вызов функций во время построения структуры (дополнительный материал)
При рассмотрении процесса построения структуры речь до сих пор шла лишь о присвоении копий аргументов переменным-членам. А другой код при этом не инициализировался. Но что если требуется вызвать иной код для манипулирования данными при создании структуры? Для этого достаточно присвоить функцию переменной-члену в определении структуры, например: struct Person
(
name,
age,
height,
weight,
function
GetHeightCM =
(
height* 2.54
),
cmHeight = GetHeightCM()
)
Обратите внимание на новую переменную-член cmHeight, введенную в структуру. В этой переменной будет храниться значение высоты человека в сантиметрах. Любая функция-член, присваиваемая переменной-члену, вызывается при
Глава 1
построении структуры. Если продолжить рассматриваемый здесь пример описания человека, то можно было бы написать
myPerson = Person "Carol" height:60,
а затем ввести в окне приемника команд следующую переменную и вычислить ее значение:
myPerson.cmHeight
В ответ на это, как и ожидалось, будет получено значение 152.4. При построении структуры можно вызвать не одну, а несколько функций. Например, в структуру можно ввести переменную-член, которая содержит вес человека в килограммах, а не в фунтах:
struct Person
(
name,
age,
height,
weight,
function GetHeightCM =
(
height * 2.54
),
function GetWeightKG =
(
weight * 2.2
),
cmHeight = GetHeightCM(),
kgWeight = GetWeightKG()
)
Вызов функций во время создания структуры является весьма эффективным средством MAXScript.
Строковые переменные содержат буквенно-цифровые символы или текст, например "Hello", "MAX4U" или "Введите ваше имя". Строки представляют собой литеральные значения, которые могут использоваться во всплывающих сообщениях или при указании пути к файлу. Строки присваиваются строковым переменным с помощью кавычек. Если не снабдить строку кавычками, это приведет к ошибке.
В MAXScript предоставляется целый ряд операций, которые можно выполнять над строками.
Сцепление означает объединение двух строк с помощью знака "плюс" (+). Это аналогично сложению двух строк для получения третьей:
textl = "MAXScriptis"
text2 = " fun!"
text3 = textl + text2
В приведенном выше примере переменная text3 будет иметь значение "MAXScriptisfun!" (MAXScript — интересный язык программирования!).
Основы MAXScript
Обратите внимание на пробел в начале строки text2, который введен для правильного чтения строки. В строке пробел считается отдельным символом.
Для просмотра строки служит функция messageBox:
messagebox text3
На приведенном ниже рисунке показан результат выполнения представленного выше сценария. В окне приемника команд выводятся результаты присваивания значений строковым переменным после выполнения каждой строки данного сценария.