我想编写一个通用方法来获取 String 或 Int 的位置 x 处的元素。 现在我的问题是,如何强制 Scala 将 T 转换为 Int 或调用 Int 特定方法。
这是代码:
def key[T](elm:T,pos:Int) = elm match{
case x:Int => {
def digit(number:Int, pos:Int):Int = {
if(pos == 0) number % 10
else digit(number/10, pos-1)
}
digit(elm.toInt,(elm.toInt).length-pos-1)
}
case x:String => (elm.toString).charAt(pos)
}
谢谢!
最佳答案
def key[T](elm:T,pos:Int) = elm match {
case x:Int => x.toString.charAt(pos)
case s:String => s.charAt(pos)
}
使用 View 的解决方案:
implicit def i2s(i:Int):String = i.toString
def key2[T <% String](elm:T,pos:Int) = elm match {
case x:Int => x.charAt(pos)
case s:String => s.charAt(pos)
}
关于generics - scala 类型匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004677/