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