Контроль за типами объектов
Выражения и их части в 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.