Spec-Zone.ru › Scala 3.1

Объект scala.adhocExtensions

Исходный код

@compileTimeOnly("`adhocExtensions` может использоваться только во время компиляции в операторах импорта")
object adhocExtensions

При импорте разрешаются имплицитные расширения неопределённых классов в других единицах компиляции.

Почему контролировать функцию? Имплицитные расширения обычно следует избегать, поскольку они обычно не могут полагаться на «внутренний» договор между классом и его расширениями. Только открытые классы должны указывать такой договор. Имплицитные расширения могут сломаться в будущих версиях расширяемого класса, так как расширяемый класс свободен изменять свою реализацию без ограничений внутренним договором.

Почему разрешать? Иногда имплицитное расширение может быть необходимым, например, при моделировании класса в фреймворке тестирования или для обхода ошибки или отсутствующей функции в исходном классе. Тем не менее, такие расширения должны быть ограничены по объёму и чётко документированы. Вот почему для них требуется импорт языка.

Супертипы
class Object
trait Matchable
class Any
Тип «я»
adhocExtensions.type

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/runtime/stdLibPatches/language$$adhocExtensions$.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API