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.

Примеры

Пример 1

Мы запускаем с преобразования массива в список доменного типа 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)

Пример 2

Функциональный 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)

Пример 3

Обратите внимание на то, что часто преобразование может также быть достигнуто вызовом конструктора доменного 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).

Параметры

object

Любой объект

T

Любая область

Возвращаемые значения

Объект доменного T или значение FAIL.

Перегруженный

T

Смотрите также

Функции MuPAD