Я не уверен, что формулировка вопроса была подходящей, поэтому я уточню.Scala использует зависимый тип в сигнатуре типа функции?
sealed trait RedisKey[A] {
type valueType = A
def name: String
}
case object FirstName extends RedisKey[String] { val name = "first_name" }
case object Age extends RedisKey[Int] { val name = "age" }
trait Redis {
def fetch(key: RedisKey)// : key.valueType
}
Мне нужно ограничить тип возвращаемого fetch
на RedisKey
«s зависимого типаvalueType
(не уверен, если это правильный термин). Но, очевидно, вышеупомянутое не работает, так как мне нужен конкретный экземпляр RedisKey
, прежде чем я получу доступ к его зависимому типу.
Можно ли добиться этого каким-либо образом?
HUH? мы можем ссылаться на экземпляр подписи? Я подтвердил, что это работает, но как? Это из-за наличия зависимого типа в 'trait', который позволяет это? Не могли бы вы назвать меня официальной спецификацией? –
Элемент 'RedisKey' содержит элемент абстрактного типа (' valueType'). Метод 'fetch' использует типы singleton в своем обратном типе ([spec] (http://www.scala-lang.org/files/archive/spec/2.11/03-types.html#singleton-types)). – planetenkiller