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