coerceПреобразование типов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
coerce(object, T)
coerce(object, T) попытки преобразовать object в элемент доменного T.
Если это не возможно или не реализованное, то FAIL возвращен.
Области обычно реализуют эти два метода "convert" и "convert_to" для задач преобразования.
coerce использование эти методы следующим образом: Это сначала вызывает T::convert(object) выполнять преобразование. Если этот вызов дает к FAIL, затем результат вызова object::dom::convert_to(object, T) возвращен, который снова может быть значением FAIL.
Узнать возможные преобразования для object или какие преобразования обеспечиваются доменным T, считайте описание метода "coerce" или "convert", соответственно, это может быть найдено на странице справки доменного T, и описание метода "convert_to" на странице справки области object.
Только немного основных областей в настоящее время реализуют методы "convert" и "convert_to".
Используйте функциональный expr преобразовывать объект в элемент основной области.
Обратите внимание на то, что часто преобразование может также быть достигнуто вызовом конструктора доменного T. Смотрите пример 3.
Мы запускаем с преобразования массива в список доменного типа DOM_LIST:
a := array(1..2, 1..3, [[1, 2, 3], [4, 5, 6]])
![]()
coerce(a, DOM_LIST)
![]()
Мы преобразуем массив в hfarray из типа DOM_HFARRAY:
coerce(a, DOM_HFARRAY)
![]()
Преобразование массива в полином не реализовано, и таким образом coerce возвращает FAIL:
coerce(a, DOM_POLY)
![]()
Можно преобразовать один - или двумерный массив в матрицу, и наоборот. Пример:
A := coerce(a, matrix); domtype(A)
![]()
![]()
Преобразование матрицы в список также возможно. Результатом является затем список внутренних списков, где внутренние списки представляют строки матрицы:
coerce(A, DOM_LIST)
![]()
coerce([1, 2, 3, 2], DOM_SET)
![]()
Любой объект MuPAD® может быть преобразован в строку, такую как арифметическое выражение 2*x + sin(x^2):
coerce(2*x + sin(x^2), DOM_STRING)
![]()
Функциональный factor вычисляет факторизацию многочленного выражения и возвращает объект области библиотеки Factored:
f := factor(x^2 + 2*x + 1); domtype(f)
![]()
![]()
Эта область реализует подпрограмму преобразования "convert_to", который мы можем вызвать непосредственно, чтобы преобразовать факторизацию в список (см. factor для деталей):
Factored::convert_to(f, DOM_LIST)
![]()
Однако более удобно использовать coerce, который внутренне вызывает стандартную программу паза Factored::convert_to:
coerce(f, DOM_LIST)
![]()
Обратите внимание на то, что часто преобразование может также быть достигнуто вызовом конструктора доменного T. Например, следующий вызов преобразует массив в матрицу доменного типа Dom::Matrix(Dom::Rational):
a := array(1..2, 1..2, [[1, 2], [3, 4]]): MatQ := Dom::Matrix(Dom::Rational):
MatQ(a)
![]()
Вызов MatQ(a) подразумевает вызов метода "new" из доменного MatQ, который на самом деле вызывает метод "convert" из доменного MatQ преобразовывать массив в матрицу.
Здесь, то же самое может быть достигнуто с использованием coerce:
A := coerce(a, MatQ); domtype(A)
![]()
![]()
Обратите внимание на то, что конструктор доменного T как предполагается, создает объекты, не преобразует объекты других областей в доменный тип T. Конструктор часто позволяет больше чем один аргумент, который позволяет реализовывать различные удобные для пользователя способы создать объекты (например, смотрите эти несколько возможностей для создания матриц, предлагаемых matrix).
|
Любой объект |
|
Любая область |
T