Рассмотрим кодек по умолчанию, предлагаемый в пакете io
.
implicitly[io.Codec].name //res0: String = UTF-8
Это неявный "низкий приоритет", поэтому его легко переопределить без неоднозначности.
implicit val betterCodec: io.Codec = io.Codec("US-ASCII")
implicitly[io.Codec].name //res1: String = US-ASCII
Этотакже легко повысить уровень приоритета.
import io.Codec.fallbackSystemCodec
implicit val betterCodec: io.Codec = io.Codec("US-ASCII")
implicitly[io.Codec].name //won't compile: ambiguous implicit values
Но можем ли мы пойти в противоположном направлении?Можем ли мы создать неявный низкий уровень, который отключает («неоднозначно») значение по умолчанию?Я смотрел на уравнение приоритета и играл с последствиями низкого приоритета, но мне еще предстоит создать нечто неоднозначное по умолчанию.