作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难弄清楚如何在 Scala 中存储或传递类型。
我想要实现的是这样的:
abstract class Foo( val theType : type )
object Foo{
case object Foo1 extends Foo(String)
case object Foo2 extends Foo(Long)
}
theFoo match{
case String => "Is a string"
case Long => "Is a long"
}
theFoo.asInstanceOf[Foo1.theType]
Array(Foo1,Foo1,Foo2,Foo3,Foo1)
我可以解析提示该模式的字节数组,如果在某个时候我有不同的字节流,我可以编写一个新模式
Array(Foo3, Foo4, Foo5)
无需重新实现解析逻辑。
trait Command{
//This is implemented in every command
val schema : List[Tuple[String,Int,Int,Type]] //Position,Size,DataType
def parse() : List[Tuple[String,Int,Int,Type,Any]] = schema.map(//match using the type)
}
class Command1 extends Command {
override val schema = List[Tuple("theName",0,10,String),Tuple("myType",10,12,MyType),Tuple("theId",13,20,Long)]
val theActualName = parse().find(_._1 == "theName")._5.asInstanceOf[String] //I would like to avoid this cast
}
最佳答案
您可以使用 Scala 2.10(当它出现时)将类型作为值获取。在此之前,您可以获得的最好的是类(例如 classOf[String]
),但它会丢失任何类型参数。
即使使用 Scala 2.10,您也会遇到一些严重的限制。查看最近的 blog post以我的为例。
关于scala - 如何在 Scala 中将类型作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271690/
我是一名优秀的程序员,十分优秀!