logo search
Самоучитель по Maple

5. Контроль за типами объектов Контроль за типами объектов

Выражения и их части в Maple 7 рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т. д. Могут также возвращаться данные об операторах. Примеры применения этой функции даны ниже:

> whattype(2+3);

integer

> whattype(Pi):

symbol

> whattype(123./5)

float

> whattype(l/3i:

fraction

> whattype(sin(x));

function

> whattype([1.2.3,a,b,c])

;list

> whattype(a+b+c);

+

> whattype(a*b/c):

*

> whattype(a'b):

^

> whattype(H-2+3=4);

=

С помощью функции type(object.t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:

> type(2+3,integer):

true

> type(s1n(x).function);

true

> typeChello,string);

false

> type("hello",string);

true

> typed/3.fraction):

true

При успешном соответствии типа объекта указанному (второй параметр) функция type возвращает логическое значение true, в противном случае — false.

Для более детального анализа объектов может использоваться функция hastype(expr. t), где ехрr — любое выражение и t — наименование типа подобъекта.

Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении ехрr. Примеры применения этой функции даны ниже:

> hastype(2+3,integer);

true

> hastype(2+3/4.integer):

false

> hastype(2*sin(x).function);

true

> hastype(a+b-c/d,'+'):

true

Еще одна функция — has(f.x) — возвращает логическое значение true, если подобъект х содержится в объекте f, и false в ином случае:

> has(2*sin(x),2);

true

> has(2*sin(x).V);

false

> has(2*sin(x),3-l);

true

Следует отметить, что соответствие подобъекта выражения указанному подобъекту понимается в математическом смысле. Так, в последнем примере подобъект «3 - 1», если понимать его буквально, в выражении 2*sin(r) не содержится, но Maple-язык учитывает соответствие 3 - 1 = 2, и потому функция has в последнем примере возвращает true.