Сцепление

Строки

Функции-члены структуры

Структуры можно сделать весьма эффективными, если включить функции-члены в их определение. Такие функции-члены действуют аналогично обычным функциям, за исключением того что они имеют доступ к данным-членам структуры. Вновь обратившись к примеру описания человека, можно ввести функцию-член, которая возвращает значение высоты человека в сантиметрах, а не в дюймах, например:

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

На приведенном ниже рисунке показан результат выполнения представленного выше сценария. В окне приемника команд выводятся результаты присваивания зна­чений строковым переменным после выполнения каждой строки данного сценария.