作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果之前已经回答过这个问题,请指出我正确的链接。
我有这个代码:
def getResult(a:Any):Any = a
def getAnswer[T](i:Int) = {
val result = getResult(i)
result match {
case t:T => Some(t)
case _ => None
}
}
unchecked warning
一切都与
T
匹配.例如,当我做
getAnswer[Int](2)
, 我得到
Some(2)
(如预期)。但是,如果我这样做
getAnswer[String](2)
, 我也收到
Some(2)
这是意料之中的(我需要
None
)。
getAnswer
正常工作(即,返回
Some(result)
当且仅当结果类型为
T
)?
最佳答案
def getAnswer[T](i:Any)(implicit m:Manifest[T]) = i match {
case t:Int if m.erasure == classOf[Int] => Some(t)
case t:Double if m.erasure == classOf[Double] => Some(t)
//... other Primitives
case t if m.erasure.isInstance(t) => Some(t) //this matches AnyRefs
case _ => None
}
关于scala - 我们可以将 Any 与泛型类型匹配吗? [斯卡拉 2.8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4859508/
我是一名优秀的程序员,十分优秀!