2016-08-11 5 views
1

Bei einer Type namens enthält inner, würde ich eine neue Type erstellen möchten, die als inner eine Option enthält einen Typ des gleichen Typs darstellt.eine Art gegeben, schaffen eine Art Option, die es

Zum Beispiel kann die Signatur einer Methode, die dies tun würde, kann etwas wie folgt aussehen:

def createOptionType(inner: Type): Type = { 
    typeOf[Option[inner]] // this line is pseudocode 
} 

This answer hilft teilweise, aber die Verwendung eines generischen Methode macht, während in diesem Fall habe ich einen konkreten Typ übergeben darin, Generika unbrauchbar zu machen.

Antwort

5

Sie können scala.reflect.runtime.universe.appliedType dafür verwenden:

import scala.reflect.runtime.universe._ 

def createOptionType(inner: Type): Type = 
    appliedType(typeOf[Option[_]], inner)