Size: a a a

Scala User Group

2020 October 16

Oℕ

Oleg ℕizhnik in Scala User Group
А общем случае ищется имплиситная конверсия.
Т.е. либо имплиситное значение типа A => B, либо специальная функция, которая имеет ровно один явный аргумент надтипа A, и возвращает подтип B
источник

E

Elijah in Scala User Group
я когда читал Programming in Scala, то там вроде писали, что у нас конверсии происходят благодаря тому, что в scala.Predef, который импортится в каждый исходник, есть имплицитная конверсия из инта в дабл
источник

Oℕ

Oleg ℕizhnik in Scala User Group
На самом деле встроенные конверсии примитивных типов устраняются в компиляторе, в байткоде не будет вызова её
источник

E

Elijah in Scala User Group
и в скала.предеф прямой конверсии нет
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Есть, но это синтетический терм
источник

E

Elijah in Scala User Group
потому я подумал, возможно он в ричинт оборачивается
источник

E

Elijah in Scala User Group
у которого уже есть, собственно, toDouble
источник

E

Elijah in Scala User Group
вернее, там есть

override def doubleValue = self.toDouble
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну вот а toDouble в языке scala - это просто метод Int
источник

Oℕ

Oleg ℕizhnik in Scala User Group
(тоже синтетический)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Elijah
вернее, там есть

override def doubleValue = self.toDouble
это для какого-нибудь Number, скорее всего
источник

E

Elijah in Scala User Group
так, стоп, я совсем запутался
источник

E

Elijah in Scala User Group
Oleg ℕizhnik
(тоже синтетический)
что такое синтетический метод
источник

E

Elijah in Scala User Group
начнем с этого
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Elijah
что такое синтетический метод
такая фигня, которой в байткоде не будет, она заменится на какую-то интрисик операцию
источник

Oℕ

Oleg ℕizhnik in Scala User Group
например метод asInstanceOf, isInstanceOf, которые в java - часть языка, а в скале - просто методы Any
источник

E

Elijah in Scala User Group
In computer software, in compiler theory, an intrinsic function (or builtin function) is a function (subroutine) available for use in a given programming language whose implementation is handled specially by the compiler
источник

E

Elijah in Scala User Group
понятно короче
источник

E

Elijah in Scala User Group
но все же. где-то же написан код для этой операции
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Так же точно для примитивов.
В джаве нет никаких методов у примитивов, а в скале есть.
И даже + в 1 + 2 - это метод
источник