2015-01-19 8 views
2

По какой-то причине у меня естьForce передавая параметр типа

val stuff: Map[String, Any] = Map[String, Any](
    ("a", 1), 
    ("b", "one"), 
    ("c", false) 
) 

def getThing[T](key: String): T = { 
    stuff.get(key).get.asInstanceOf[T] 
} 

val a: Int = getThing("a") // I want this to break on compile 
val anotherA: Int = getThing[Int]("a") // I want this to work as normal 

Я хочу прибудете-х без указания типа разбить на компиляции, и те, которые сделать указать на работу.

+0

Не думаю, что это возможно. – vptheron

+0

Вы не можете остановить 'T' от того, чтобы быть понятным' Int', так что это в основном и то же самое ... –

+2

«По какой-то причине». Зачем? –

ответ

1

Вы не можете принудительно предоставить аргумент типа явно. Может быть, вы можете превратить его в нормальный аргумент, если вы действительно хотите этого ...

case class Type[T] 

def getThing[T](t: Type[T])(key: String): T = 
    stuff.get(key).get.asInstanceOf[T] 

val a = getThing(Type[Int])("a") 
Смежные вопросы