Класс Conversion.Conversion
@FunctionalInterface
абстрактный класс Conversion[-T, +U] extends T => U
Класс для неявных значений, которые могут служить неявными преобразованиями. Алгоритм неявного разрешения будет действовать так, как если бы существовало дополнительное неявное определение:
def $implicitConversion[T, U](x: T)(c: Conversion[T, U]): U = c(x)
Однако, наличие этого определения замедлило бы поиск неявных значений, так как его внешний тип соответствует любой паре типов. Поэтому поиск неявных значений содержит специальный случай в Implicits#discardForView, который эмулирует преобразование более эффективным способом.
Обратите внимание, что это класс SAM — литералы функций автоматически преобразуются в Conversion значения.
Также обратите внимание, что в загрузке dotty Predef.<:< должен наследоваться от Conversion. Это сократит количество специальных случаев в discardForView с двух до одного.
Класс Conversion также может использоваться для явного преобразования, используя метод расширения convert.
| Надтипы |
|---|
Абстрактные методы
Исходный код
def apply(x: T): U
Преобразовать значение x типа T в тип U
Наследованные методы
Исходный код
def andThen[A](g: U => A): T1 => A
Компонует два экземпляра Function1 в новый Function1, при этом данная функция применяется первой.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | новая функция |
| Унаследовано от | Function1 |
Исходный код
def compose[A](g: A => T): A => R
Компонует два экземпляра Function1 в новый Function1, при этом данная функция применяется последней.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращает | новая функция |
| Унаследовано от | Function1 |
Исходный код
Возвращает строковое представление объекта.
Представление по умолчанию зависит от платформы.
| Возвращает | строковое представление объекта. |
|---|---|
| Классы определения | Function1 -> Any |
| Унаследовано от | Function1 |
Расширения
extension (x: T)
Исходный код
def convert: U
x.convert преобразует значение x типа T в тип U
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Conversion.html