1
我想動態地將變量轉換爲Option[T]
。語義是:如果變量x
匹配T
類型,則投射應返回Some(x)
,否則應返回None
。使用單個地圖調用比使用isInstanceOf[T]
伴隨asInstanceOf[T]
或構建怪異的外殼開關要乾淨得多。如何動態地將變量轉換爲選項
我曾嘗試一些簡單的代碼下面
object OptionCast {
def apply[T](source : Any) : Option[T] = source match {
case s : T => Some(s)
case _ => None
}
}
但它實際上忽略了類型:OptionCast[Int]("some").map(_ + 2)
給我的錯誤類型。
我該如何重寫這段代碼?
try:source:T instead? –
@StefanKunze問題是應用結果類型被刪除(選項[T]),而不是輸入 –
動態投射需要從任何類型投射 – ayvango