Класс scala.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
Унаследованные методы
Исходник@unspecialized
def andThen[A](g: U => A): T => A
Компонует две реализации Function1 в новую Function1, применяя текущую функцию первой.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращаемое значение | новая функция |
| Унаследованно от | Function1 |
Исходник@unspecialized
def compose[A](g: A => T): A => U
Компонует две реализации Function1 в новую Function1, применяя текущую функцию последней.
| Параметры типа |
|
|---|---|
| Параметры значения |
|
| Возвращаемое значение | новая функция |
| Унаследованно от | Function1 |
Исходник
| Определяющие классы | Function1 -> Any |
|---|---|
| Унаследованно от | Function1 |
Расширения
расширение (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.1.1/scala/Conversion.html